第七章 方法
一、学习目标
①掌握Java类库中提供的常用方法
②了解自定义方法的基本概念和用法
③理解形式参数和实际参数
④理解参数的值传递和引用传递
⑤掌握自定义方法的定义和调用
⑥理解变量的作用域范围
⑦掌握方法的重载
二、何为方法
**方法:**是为了完成一个操作而组合在一起的语句组
使用方法的好处:
1.可以省去编写重复代码的苦闷
2.可以组织和简化编码
3.提高代码可读性
方法实例:
/** * 打印规定次数的台词 * @param times 打印的次数 * @param words 打印的台词 */ public static void pirntWords(int times, String words){ for(int i = 0; i < times; i++){ System.out.println(words); } } /*注意: *1、static 修饰的方法一般称作静态方法 *2、方便在没有创建对象的时候调用方法 */
三、方法的种类
①内置方法
由JDK类库提供
需要导入相应的包
②自定义方法
带参数
不带参数
四、自定义方法
**定义方法(Method):**由方法名称、参数、返回值类型及方法体组成
修饰符 返回值类型 方法名([参数列表]){ //方法体 } //例 public static int getSum(int num1, int num2){ int result = num1 + num2; return result; } //调用方法 int num1 = 80; int num2 = 90; int sum = getSum(num1, num2); System.out.println("和为" + sum);
五、参数传递机制
**按值传递(pass-by-value):**为方法传递参数时,参数值不会直接传递给方法,而是先制作参数值的副本,存储在栈上,再使这个副本可用于方法,而不是使用初始值。
六、不定长度的参数
**使用场景:**调用方法时,方法的参数个数无法确定。
例
public static void printAvg(double ...score){ double sum = 0; for(double num : score){ sum += num; } System.out.println("平均值为:" + sum / score.length); }
注意:
①不定长参数必须是参数列表的最后一个
②一个方法只准有一个不定长参数
七、方法重载
**重载(overloading)😗*方法名称相同,参数列表不同。编译器根据方法签名决定调用哪个方法。
参数列表不同的概念:
1、参数个数不同
2、参数类型不同
3、参数顺序不同
例:
int max(int num1, int num2){ return num1 > num2 ? num1 : num2; } double max(double num1, double num2){ return num1 > num2 ? num1 : num2; } String max(String str1, String str2){ if(str1.compareTo(str2) > 0){ return str1; }else{ return str2; } } //当虚拟机能匹配多个方法时,会报错 int max(int num1, double num2){ return num1 > num2 ? num1 : num2; } double max(double num1, int num2){ return num1 > num2 ? num1 : num2; } //调用上面的方法 public static void main(String[] args){ System.out.println(max(5, 10)); }
注意:
①有时调用方法会有两个或更多可能的匹配,称为歧义调用。
八、变量的作用域
**①作用域:**指变量可以在程序中引用的范围。
②注意:
1.参数实际上就是一个局部变量
2.参数的作用域范围涵盖整个方法
3.局部变量必须在使用前声明和赋值