方法概述
为了避免重复的代码过多,Java中提出了方法的概念。方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。
方法的定义
方法的专业术语
- 参数:进入方法的数据
- 返回值:从方法中出来的数据
定义格式:
格式详解:
- 修饰符:现阶段的固定写法,public static。具体怎么写,根据需求来确定
- 返回值类型:也就是方法最终产生的数据结果是什么类型
- 方法名称:方法的名字,规则和变量一样,小驼峰
- 参数类型:进入方法的数据是什么类型
- 参数名称:进入方法的数据对应的变量名称。注意:参数如果有多个,使用逗号进行分隔
- 方法体:方法需要做的事情,若干行代码
- return:两个作用,第一停止当前方法,第二将后面的返回值还给调用处
- 返回值:也就是方法执行后最终产生的数据结果。注意:return后面的“返回值”,必须和方法名称前面的“返回值类型”,保持对应。
注意:
如果要定义一个方法就必须两个明确。明确返回值类型,明确参数列表。
如何确定方法是否有要定义参数
- 有参数:方法需要一些外界数据条件,才能完成方法的功能主体的时候,就必须定义参数。例如:两个数字相加,必须知道两个数字是各自多少,才能相加。
- 无参数:方法不需要任何外界数据条件,自己就能独立完成方法功能主体,就可以定义为无参数。例如:定义一个方法,打印10次HelloWorld。
如何确定方法是否有要定义返回值
- 有返回值:方法的运行结果,外界的代码还需要使用,必须定义返回值。例如:求 和
- 无返回值:方法的运行结果,外界的代码无需在使用,可以不定义返回值。例如:打印 hello world
注意事项:
- 对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用。
- 但是对于无返回值的方法,只能使用单独调用,不能使用打印调用或者赋值调用。
调用方法的三种形式
- 直接调用:直接写方法名调用
- 赋值调用:调用方法,在方法前面定义变量,接收方法返回值
- 输出语句调用: 在输出语句中调用方法, System.out.println(方法名()) 。
需求
定义2个int 数字相加的方法
分析:定义方法的两个明确
- 明确返回值类型:方法计算的是整数的求和,结果也必然是个整数,返回值类型定义为int类型。
- 明确参数列表:计算哪两个整数的和,并不清楚,但可以确定是整数,参数列表可以定义两个int类型的 变量,由调用者调用方法时传递
代码实现
package demo02; public class MyDemo02MethodDefine { public static void main(String[] args) { //直接调用 getSum(1, 2); //赋值调用 int result = getSum(3, 4); System.out.println("2个int数的和是" + result); //输出语句调用: System.out.println(getSum(5, 6)); } public static int getSum(int i, int j) { System.out.println("方法执行了"); //方法体 int result = i + j; //返回结果到方法的调用处 return result; } }
代码运行之后结果
调用方法的流程图解
使用方法的时候,注意事项:
- 方法应该定义在类当中,但是不能在方法当中再定义方法。不能嵌套。
- 方法定义的前后顺序无所谓。
- 方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用。
- 如果方法有返回值,那么必须写上“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() { System.out.println("AAA"); System.out.println("BBB"); // return; // 最后一行的return可以省略不写。 } public static int getMax(int a, int b) { /*int max; if (a > b) { max = a; } else { max = b; } return max;*/ if (a > b) { return a; } else { return b; } } }