ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[success] # java 方法 1. 方法(method)是程序中最小的执行单元 * 方法必须先创建才可以使用,该过程成为**方法定义** * 方法创建后并**不是直接可以运行**的,需要**手动使用后,才执行,该过程成为方法调用** 2. 方法作用,**将重复的代码、具有独立性的功能抽取到方法中,这样可以提高代码复用性,让代码逻辑更加清晰** 3. `java `中方法格式定义 * **方法名称**:自己取名,有意义,英文小写,驼峰模式。(有意义的名字即可) * **方法体代码**:完成自己需要写的功能代码即可。(具体需求具体实现),需要关注的就两点:**1、分析方法是否需要申明返回值类型;2、分析方法是否需要接收参数。** ~~~ 修饰符 返回值类型 方法名( 形参列表 ){ 方法体代码(需要执行的功能代码) return 返回值; } ~~~ * 效果 ![](https://img.kancloud.cn/a5/2c/a52cb018bd0ccd1957271ba94d1f5171_499x145.png) * 整体案例调用时候只需要直接调用`方法名();` ~~~ public class Test { public static void main(String[] args) { // 直接方法名调用 System.out.print(add(5, 6)); } public static int add(int a, int b) { int c = a + b; return c; } } ~~~ **方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据** ,形参列表可以有多个,甚至可以没有; 如果有多个形参,多个形参必须用“,”隔开,且不能给初始化值 ***** **注 : 案例暂时都使用`public static` 修饰。这样可以直接调用方法** >[danger] ##### 关于返回值 * 返回值主要指从`方法体内`返回到`方法体外的数据` 内容 * 在方法体中使用`return`关键字可以返回具体的数据内容 * 返回值类型可以是`基本数据类型`,也可以是`引用数据类型` * 当该方法`不需要返回任何数据内容`时,返回值类型必须申明成**void(无返回值)**, 此时方法内部**不可以使用return返回数据。** 返回值类型申明为`void`可以称为无返回值的方法 ~~~ public class Person { // 声明方法 无返回值 public void sleep() { System.out.println("睡觉"); } // 执行方法的入口文件 public static void main(String[] args) { sleep() } } ~~~ >[danger] ##### 形参列表 * `形式参数`列表主要指多个形式参数组成的列表,语法格式如下:`数据类型 形参变量名1, 数据类型 形参变量名2` * 调用时候 `实际参数`列表主要用于对形式参数列表进行初始化操作,因此参数的个数、类型以及顺序都要完全一致 * 总结:`定义方法`时的`参数叫形参`,`调用方法时`传递的参数叫`实参` ~~~ public class Test { // 声明方法 无返回值 传入参数 public static void sleep(String name, int age) { System.out.print(name + age); } // 执行方法的入口文件 public static void main(String[] args) { sleep("w", 18); } } ~~~ >[danger] ##### 可变长参数 * `参数的类型... 参数名`,方法参数部分指定类型的参数个数是可以改变的,也就是0~n个 * 一个方法的形参列表中最多只能声明`一个可变长形参`,并且需要放到参数列表的`末尾` * Java的可变参数,会被编译器转型为一个数组 ~~~ import java.util.Arrays; public class Test { public static void printParams(String... n) { System.out.print(Arrays.toString(n)); // [w, z, b] } // 执行方法的入口文件 public static void main(String[] args) { printParams("w", "z", "b"); } } ~~~ >[info] ## 案例 ~~~ public class Test { public static void main(String[] args) { // 目标:掌握带返回值方法的定义和调用格式 // 直接调用 // getSum(10,20,30); // 赋值调用 // int sum = getSum(10,20,30); // System.out.println(sum); // 输出调用 // System.out.println(getSum(10,20,30)); // 先计算第一个季度的营业额 int sum1 = getSum(10, 20, 30); // 再来计算第二个季度的营业额 int sum2 = getSum(20, 30, 40); // 计算第三个季度的营业额 int sum3 = getSum(20, 30, 40); // 计算第四个季度的营业额 int sum4 = getSum(20, 30, 40); // 求全年的总营业额 int sum = sum1 + sum2 + sum3 + sum4; System.out.println(sum); } public static int getSum(int num1, int num2, int num3) { int result = num1 + num2 + num3; return result;// 返回给方法的调用处 } } ~~~ >[info] ## 总结 * 方法的编写顺序无所谓。 * 方法与方法之间是平级关系,不能嵌套定义。 ![](https://img.kancloud.cn/d4/24/d424fb14351a748b76c72b4bbcf7de83_893x234.png) * 方法的返回值类型为**void(无返回值),方法内则不能使用return返回数据**,如果方法的**返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据**。 * `return`语句下面,不能编写代码,因为永远执行不到,属于无效的代码。 * 方法不调用就不执行, 调用时必须严格匹配方法的参数情况。**有返回值的方法调用时可以选择定义变量接收结果**,或者直接输出调用,甚至直接调用;**无返回值方法的调用只能直接调用**。