Java奠基】方法的讲解与使用

news2024/11/17 15:39:35

目录

方法概述

方法的定义与调用

方法的重载

方法的值传递


方法概述

方法是程序中最小的执行单元,在实际开发中会将重复的具有独立功能的代码抽取到方法中,这样可以提高代码的复用性和可维护性。

方法的定义与调用

在Java中定义方法的格式都是相同的,不过根据具体的需要可以抽离成以下三种形式方法,如下:

最简单的方法定义,格式如下:

public static void 方法名() { 方法体(就是打包起来的代码) };

public class Main {
    public static void main(String[] args) {
        // 调用say方法
        say();
    }
    // 定义一个方法
    public static void say(){
        System.out.println("你好,世界!"); // 你好,世界!
    }
}

带参数的方法定义,格式如下:

public static void 方法名(参数1,参数2....){ 方法体 };

求和

public class Main {
    public static void main(String[] args) {
        // 调用getSum方法
        getSum(10,20); // 实参,方法调用中的参数
    }
    // 定义一个方法
    public static void getSum(int n,int m){ // 形参,方法定义中的参数
        int sum = n + m;
        System.out.println(sum);
    }
}

打印原数组

public class Main {
    public static void main(String[] args) {
        // 将数组进行打印在控制台
        int[] arr = {12,14,15,16,17,18};
        // 调用方法
        printArr(arr); // [12,14,15,16,17,18]
    }
    // 定义一个方法
    public static void printArr(int[] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if(i==arr.length-1){
                System.out.print(arr[i]);
            }else{
                System.out.print(arr[i]+",");
            }
        }
        System.out.print("]");
    }
}

带返回值的方法定义,格式如下:

public static 返回值类型 方法名 (参数) { 方法体; return 返回值; };

如果想在调用处要根据方法的结果,去编写另外一段代码的逻辑,为了在调用处拿到方法产生的结果,就需要定义带有返回值的方法。方法的返回值其实就是方法运行的最终结果。

数组求和

public class Main {
    public static void main(String[] args) {
        // 直接调用,如果是带有返回值的方法,是没有任何结果的
        getSum(10,20,30);

        // 赋值调用
        int result = getSum(10,20,30);
        System.out.println(result); // 60

        // 输出调用
        System.out.println(getSum(10,20,30)); // 60
    }
    // 定义一个方法
    public static int getSum(int n,int m,int x){
        int sum = n + m + x;
        return sum;
    }
}

数组求最大值

public class Main {
    public static void main(String[] args) {
        // 将数组进行打印在控制台
        int[] arr = {12,14,15,16,17,18};
        // 调用方法
        int result = getMax(arr);
        // 打印
        System.out.println(result); // 18
    }
    // 定义一个方法
    public static int getMax(int[] arr){
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(max<arr[i]){
                max = arr[i];
            }
        }
        return max;
    }
}

判断数组是否存在元素

public class Main {
    public static void main(String[] args) {
        // 定义数组
        int[] arr = {12,14,15,16,17,18};
        // 判断一个数字是否在数组中存储
        boolean result = decide(arr,10);
        // 打印结果
        System.out.println(result); // false
    }
    // 定义一个方法
    public static boolean decide(int[] arr,int number){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == number){
                return true;
            }
        }
        // 当数组中的所有数据比较完毕之后,还是没有任何结果则执行以下语句。
        return false;
    }
}

拷贝数组

public class Main {
    public static void main(String[] args) {
        // 定义数组
        int[] arr = {12,14,15,16,17,18};
        // 调用方法拷贝数据
        int[] copyArr = copyArr(arr,1,4);// 14 15 16 
        // 遍历copyArr
        for (int i = 0; i < copyArr.length; i++) {
            System.out.print(copyArr[i]+" ");
        }
    }
    // 定义一个方法
    public static int[] copyArr(int[] arr,int from,int to){
        // 定义数组
        int[] newArr = new int[to - from];
        // 伪造索引
        int index = 0;
        for (int i = from; i < to; i++) {
            newArr[index] = arr[i];
            index++;
        }
        // 将新数组返回
        return newArr;
    }
}

注意

方法不调用就不执行
方法与方法之间是平级关系,不能互相嵌套定义
方法的编写顺序和执行顺序无关
方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写。如果要编写return,后面不能跟具体的数据。

return语句下面,不能编写代码,因为永远执行不到,属于无效代码。

方法的重载

在同一个类中,定义了多个同名的方法,这些同名的方法具有同种的功能。每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系。

简单理解:同一个类中,方法名相同,参数不同的方法,与返回值无关。

                  参数不同:个数不同、类型不同、顺序不同。

public class Main {
    public static void main(String[] args) {
        // 调用方法
        compare(1,2);
        compare((byte)1,(byte)2);
        compare((short)1,(short)2);
        compare(1.1,2.2);
    }
    // 定义一个方法
    public static void compare(byte b1,byte b2){
        System.out.println("byte");
    }
    public static void compare(short s1,short s2){
        System.out.println("short");
    }
    public static void compare(int i1,int i2){
        System.out.println("int");
    }
    public static void compare(double d1,double d2){
        System.out.println("double");
    }
}

方法的值传递

传递基本数据类型时,传递的是真实的数据,形参的改变不影响实际参数的值:

public class Main {
    public static void main(String[] args) {
        int number = 100;
        System.out.println("调用change方法前:"+number);// 100
        change(number);
        System.out.println("调用change方法后:"+number);// 100
    }
    // 定义一个方法
    public static void change(int number){
        number = 200;
    }
}

如果想改变number的值,需要将方法中的number的值return出去来修改main方法的number内存值

传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值:

public class Main {
    public static void main(String[] args) {
        int[] arr = {10,130,12,14,144};
        System.out.println("调用change方法前:"+arr[1]);// 130
        change(arr);
        System.out.println("调用change方法后:"+arr[1]);// 200
    }
    // 定义一个方法
    public static void change(int[] arr){
        arr[1] = 200;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/390454.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode 困难 —— 外星文字典(拓扑排序)

题目&#xff1a; 现有一种使用英语字母的外星文语言&#xff0c;这门语言的字母顺序与英语顺序不同。 给定一个字符串列表 words &#xff0c;作为这门语言的词典&#xff0c;words 中的字符串已经 按这门新语言的字母顺序进行了排序 。 请你根据该词典还原出此语言中已知的字…

动态内存基础(二)

智能指针 ● 使用 new 与 delete 的问题&#xff1a;内存所有权不清晰&#xff0c;容易产生不销毁&#xff0c;多销毁的情况 int* fun() {int* res new int(100); //fun()拥有对fun()申请的内存的销毁权return res; } int main(int argc, char *argv[]) {QCoreApplication a(…

Java线程池-重点类源码解析--更新中

1.Runnable和Callable的区别 (1) Callable规定&#xff08;重写&#xff09;的方法是call()&#xff0c;Runnable规定&#xff08;重写&#xff09;的方法是run() (2) Callable的任务执行后可返回值&#xff0c;而Runnable的任务是不能返回值的 (3) call方法可以抛出异常&#…

总时差与自由时差

定义总时差&#xff08;总浮动时间&#xff09;&#xff08;TF&#xff0c;Total Free Time&#xff0c;不耽误项目总进度&#xff09;LS&#xff08;Latest Start&#xff09;-ES&#xff08;Earliest Start&#xff09;LF&#xff08;Latest Finish&#xff09;-EF&#xff0…

SpringCloud:Nacos配置管理

目录 一、统一配置管理 1、打开nacos控制台&#xff0c;点击配置管理&#xff0c;添加配置 2、编写配置 3、完成示例 ​二、服务配置拉取 1、引入Nacos配置管理客户端依赖 2、在resource目录添加一个bootstrap.yml文件&#xff0c;这个文件是引导文件&#xff0c;优先级高…

English Learning - L2 第 3 次小组纠音 [ʌ] [ɒ] [ʊ] [ɪ] [ə] [e] 2023.3.4 周六

English Learning - L2 第 3 次小组纠音 [ʌ] [ɒ] [ʊ] [ɪ] [ə] [e] 2023.3.4 周六共性问题小元音 [ʌ]小元音 [ɒ]小元音 [ʊ]小元音 [ɪ]小元音 [ə]小元音 [e]我的发音问题纠音过程共性问题 小元音 [ʌ] 口型容易偏大 解决办法&#xff1a;因为嘴角没有放松&#xff0c…

基于java的俱乐部会员管理系统

技术&#xff1a;Java、JSP等摘要&#xff1a;随着科学技术的飞速发展&#xff0c;科学技术在人们日常生活中的应用日益广泛&#xff0c;也给各行业带来发展的机遇&#xff0c;促使各个行业给人们提供更加优质的服务&#xff0c;有效提升各行业的管理水平。俱乐部通过使用一定的…

程序员画流程图的工具Draw.io

Draw.io 是一个很好用的免费流程图绘制工具,制图结果本质上是xml文件&#xff0c;web版和桌面版可以支持导出图像&#xff08;png或者svg矢量图都可以&#xff09;。你可以利用它绘制一系列的图表、图示或图形&#xff0c;包括流程图、UML类图、组织结构图、泳道图、E-R 图、文…

人脸网格/人脸3D重建 face_mesh(毕业设计+代码)

概述 Face Mesh是一个解决方案&#xff0c;可在移动设备上实时估计468个3D面部地标。它利用机器学习&#xff08;ML&#xff09;推断3D面部表面&#xff0c;只需要单个摄像头输入&#xff0c;无需专用深度传感器。利用轻量级模型架构以及整个管道中的GPU加速&#xff0c;该解决…

Python QT5设计UI界面教程

简介&#xff1a;PyQT5开发常用知识&#xff0c;零基础上手&#xff0c;需配合我之前写的博文&#xff0c;配置好QT设计工具和ui文件转py文件的工具。博文为&#xff1a;使用Python PyQt5实现一个简单的图像识别软件&#xff1b;页面效果如下&#xff1a; 1.设计菜单栏 Contai…

[数据结构与算法(严蔚敏 C语言第二版)]第1章 绪论(学习复习笔记)

1.1 数据结构的研究内容 计算机解决问题的步骤 从具体问题抽象出数学模型设计一个解此数学模型的算法编写程序&#xff0c;进行测试、调试&#xff0c;直到解决问题 计算机解决问题的过程中寻求数学模型的实质是 分析问题&#xff0c;从中提取操作的对象&#xff0c;并找出这些…

【iOS】Blocks

BlockBlocks概要什么是Blocks&#xff1f;Block语法Block类型变量截获自动变量值__block说明符Blocks的实现Block的实质Blocks概要 什么是Blocks&#xff1f; Blocks可简单概括为&#xff1a; 带有自动变量&#xff08;局部变量&#xff09;的匿名函数 在使用Blocks时&#x…

socket 编程实战(编写服务器程序 )

IP 地址格式转换函数 对于人来说&#xff0c;我们更容易阅读的是点分十进制的 IP 地址&#xff0c;譬如192.168. 1.110 、192.168.1.50&#xff0c;这其实是一种字符串的形式&#xff0c;但是计算机所需要理解的是二进制形式的 IP 地址&#xff0c;所以我们就需要在点分十进制…

代码随想录第三章读书笔记——数组

一.二分查找前提&#xff1a;数组为有序数组&#xff0c;数组中无重复元素&#xff0c;因为一旦有重复元素&#xff0c;使用二分查找法返回的元素下标可能不是唯一的&#xff0c;这些都是使用二分法的前提条件&#xff0c;当题目描述满足如上条件的时候&#xff0c;可要想一想是…

FPGA的GigE Vision IP相机图像采集方案设计,转换为千兆UDP,支持10G MAC

1 概述 GigE Vision是一个比较复杂的协议&#xff0c;要在FPGA中完全实现具有较大的难度。如果FPGA作为接收端希望实现GigE Vision相机的配置和图像采集功能&#xff0c;则只需要实现其中小部分功能即可。本文对原有GigE Vision协议的结构进行了裁剪&#xff0c;仅保留设备搜索…

Maven基本使用以及IDEA中配置使用的详细介绍

文章目录MavenMaven基本介绍Maven基本使用IDEA配置MavenIDEA配置MavenMaven坐标详解IDEA创建Maven项目IDEA导入Maven项目Maven依赖管理Maven Maven基本介绍 Apache Maven 是一个项目管理和构建工具&#xff0c;它基于项目对象模型(POM)的概念&#xff0c;通过一小段描述信息来…

GAMES101学习笔记——光栅化

一&#xff1a;什么是光栅化&#xff08;Rasterization&#xff09; 把空间里的物体画在屏幕上。 屏幕由一个个阵列排布的像素点组成&#xff0c;屏幕大小指宽度方向由width个像素点&#xff0c;高度方向由height个像素点。 像素点索引范围&#xff1a;&#xff08;0&#xf…

【Java开发】JUC进阶 03:读写锁、阻塞队列、同步队列

1 读写锁&#xff08;ReadWriteLock&#xff09;&#x1f4cc; 要点实现类&#xff1a;ReentrantReadWirteLock通过读写锁实现更细粒度的控制&#xff0c;当然通过Synchronized和Lock锁也能达到目的&#xff0c;不过他们会在写入和读取操作都给加锁&#xff0c;影响性能&#x…

黑马程序员SSM框架教程之学习笔记1

P44-SpringMVC入门案例 1.在pom.xml中导入坐标springMVC与servlet 2.创建一个SpringMVC控制器类 3.创建springMVC配置文件springMvcCponfig 4.定义一个servlet容器启动配置类&#xff0c;在里面加载spring的配置 5.在pom.xml文件中配置tomcat插件 运行结果显示 P45-springMVC入…

2023-03-05:ffmpeg推送本地视频至lal流媒体服务器(以RTMP为例),请用go语言编写。

2023-03-05&#xff1a;ffmpeg推送本地视频至lal流媒体服务器&#xff08;以RTMP为例&#xff09;&#xff0c;请用go语言编写。 答案2023-03-05&#xff1a; 使用 github.com/moonfdd/ffmpeg-go 库。 先启动lal流媒体服务器软件&#xff0c;然后再执行命令&#xff1a; go…