方法的概念
方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。
方法的好处
当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。
方法的定义
定义格式:
![](https://i-blog.csdnimg.cn/blog_migrate/a673500aae6d9625a70dad76a05daf5a.png)
方法中2个名词解释:
- 参数:就是进入方法的数据。
- 返回值:就是从方法中出来的数据。
方法参数详解:
- 修饰符:现阶段的固定写法,public static
- 返回值类型:也就是方法最终产生的数据结果是什么类型
- 方法名称:方法的名字,规则和变量一样,小驼峰
- 参数类型:进入方法的数据是什么类型
- 参数名称:进入方法的数据对应的变量名称,参数如果有多个,使用逗号进行分隔
- 方法体:方法需要做的事情,若干行代码
- return:两个作用,第一停止当前方法,第二将后面的返回值还给调用处。return后面的“返回值”,必须和方法名称前面的“返回值类型”,保持对应。
- 返回值:也就是方法执行后最终产生的数据结果
定义方法的三个明确
- 明确返回值类型
- 明确参数列表
- 明确方法名称,规则和变量一样,小驼峰
需求
定义一个两个int数字相加的方法。
分析:明确三要素
- 返回值类型:int
- 方法名称:sum
- 参数列表:int a, int b
方法的三种调用格式。
- 单独调用:方法名称(参数);
- 打印调用:System.out.println(方法名称(参数));
- 赋值调用:数据类型 变量名称 = 方法名称(参数);
注意:此前学习的方法,返回值类型固定写为void,这种方法只能够单独调用,不能进行打印调用或者赋值调用。
代码实现
public class Demo02MethodDefine { public static void main(String[] args) { // 单独调用 sum(10, 20); // 打印调用 System.out.println(sum(10, 20)); // 赋值调用 int number = sum(15, 25); number += 100; System.out.println("变量的值:" + number); } public static int sum(int a, int b) { System.out.println("方法执行啦!"); int result = a + b; return result; } }
执行结果
调用方法的流程图解
如何确定方法是否有参数
- 有参数:当一个方法需要一些外界数据,才能完成任务的时候,就必须定义成为有参数的方法。例如:两个数字相加,必须从外界传递两个数字是各自多少,才能相加。
- 无参数:当一个方法不需要任何外界数据,自己就能独立完成任务,就可以定义为无参数的方法。例如:定义一个方法,打印固定10次HelloWorld。
如何确定方法是否有返回值
- 有返回值:方法运行完毕之后,外界代码需要使用方法的运行结果,就必须定义方法的返回值。例如:求出2个数之间的和
- 无返回值:方法运行完毕之后,外界代码无需使用方法的运行结果,就可以定义方法为无返回值。例如:定义一个方法,打印固定10次HelloWorld。
注意事项:
- 对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用。
- 但是对于无返回值的方法,只能使用单独调用,不能使用打印调用或者赋值调用。
使用方法的时候,注意事项:
- 方法应该定义在类当中,但是不能在方法当中再定义方法。不能嵌套。
- 方法定义的前后顺序无所谓。
- 方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用。
- 如果方法有返回值,那么必须写上“return 返回值;”,不能没有。
- return后面的返回值数据,必须和方法的返回值类型,对应起来。
- 对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己。
- 对于void方法当中最后一行的return可以省略不写。
- 一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写。
代码举例
public class Demo04MethodNotice { public static int method1() { return 10; } public static void method2() { // return 10; // 错误的写法!方法没有返回值,return后面就不能写返回值。 return; // 没有返回值,只是结束方法的执行而已。 } public static void method3() { //对于void方法当中最后一行的return可以省略不写。 System.out.println("AAA"); System.out.println("BBB"); // return; // 最后一行的return可以省略不写。 } public static int getMax(int a, int b) { // 一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写。 if (a > b) { return a; } else { return b; } } }