方法
对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到“随时任意使用”,那么就可以将这些代码放在一个大括号“{}”当中,并且起一个名字。使用代码的时候,直接找到名字调用即可。
组成
首先方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
关于方法的两个概念:
1.参数:是指进入方法中的数据,有了这些数据,方法才能执行逻辑。
2.返回值:是指从方法中出来的数据,也就是方法执行之后的最终结果数据。
基本格式:
修饰符 返回值类型 方法名称(参数类型 参数名称){
方法体
return 返回值;
}
对于定义格式的解释:
修饰符:现阶段固定为public static两个关键字。
返回值类型:方法最终产生的结果数据是什么类型。
方法名称:自定义的名称,命名规则和变量一样。
参数类型:进入方法的数据是什么类型。
参数名称:进入方法的数据对应的变量名称。
方法体:方法内部执行的若干行代码。
return:结束方法的执行,并且将返回值返还给调用处。
返回值:方法最终产生的结果数据。
注意:
返回值必须和返回值类型对应。
参数如果有多个,需要使用逗号分隔。
参数如果没有,小括号则可以留空。
多个方法的定义先后顺序无所谓。
不能在一个方法内部定义方法。
调用
常见的有三种:
单独调用:这种方式无法使用方法的返回值。格式:方法名称(参数值);
打印调用:这种方式可以将方法的返回值直接打印。格式:System.out.println(方法名称(参数值));
赋值调用:这种方式可以将方法的返回值赋值给一个变量,注意变量的数据类型必须和方法的返回值类型对应。
格式:数据类型变量名称= 方法名称(参数值)
调用流程
重名问题
变量的名称是否可以与方法名称重名?可以。
两个不同的方法中,能否各自有一个重名的变量?可以。
无返回值的方法
定义格式
修饰符 void 方法名称(参数类型参数名称){
方法体
return;
}
修饰符:与普通方法一样
返回值类型:固定为void
方法名称:与普通方法一样
参数类型:与普通方法一样
参数名称:与普通方法一样
方法体:与普通方法一样
return:后面不能写返回值,直接分号结束。而且最后一行return通常情况下会省略不写。
方法重载
对于参数列表不一样的多个方法,如果设置不一样的方法名称会很麻烦,所以引入了方法重载(Overload)的技术。
方法重载:方法名称相同,但是参数列表不同,参数列表的不同包括:
1.参数的个数不同;
2.参数的类型不同;
3.参数的多类型顺序不同。
重载与下列因素无关:
1.方法的返回值;
2.参数的名称–如果新建的方法传入的参数以及顺序与已有的一样。
参数传递
形式参数:在“定义方法”的时候,写在小括号之内的变量,就叫形式参数。
实际参数:在“调用方法”的时候,真正传入方法里的数据,叫做实际参数。
两条规则:
对于基本类型(以及String)来说,形式参数的操作【不会】影响实际参数。
对于引用类型(除了String)来说,形式参数的操作【会】影响实际参数。