Java 中的方法,是为执行一个操作而组合在一起的语句组。如果一个操作会被多次执行,则可以将该操作定义成一个方法,执行该操作的时候调用方法即可。
方法包括方法头和方法体,方法头又可以分成修饰符、返回值类型、方法名和参数列表,因此方法包括 5 个部分。
方法名和参数表共同构成方法签名。
调用方法时,需要提供实参,实参必须与形参的次序相同,称为参数顺序匹配。实参必须与方法签名中的形参在次序上和数量上匹配,在类型上兼容,兼容的意思是不需要显性声明类型转换,即类型相同或者类型转换为拓宽类型。
在调用带参数的方法时,实参的值赋给形参,称为值传递。Java 中只有值传递,无论形参在方法中如何改变,实参不受影响。
当参数类型是基本数据类型时,传递的是实参的值,因此不能对实参进行修改。
当参数类型是对象时,传递的是对象的引用,此时可以对实参引用的对象进行修改,但是不能让实参引用新的对象。
方法的重载是指在同一个类中的多个方法有相同的名称,但是方法签名不同,编译器能够根据方法签名决定调用哪个方法。由于方法签名由方法名和参数表共同构成,因此方法的重载等同于多个方法有相同的名称和不同的参数列表。
方法的重载可以增加程序的可读性,执行相似操作的方法应该有相同的名称。
关于方法的重载,需要注意以下两点。
下面用两段示例代码说明方法的重载。
public class Main {public static void main(String[] args) {getSum(1, 2);getSum(1.5, 2.5);getSum(5, 5.5);}public static void getSum(int num1, int num2) {System.out.println(num1 + "+" + num2 + "=" + (num1 + num2));}public static void getSum(double num1, double num2) {System.out.println(num1 + "+" + num2 + "=" + (num1 + num2));}
}
public class Main {public static void main(String[] args) {getSum(1, 2);// 歧义调用,编译错误}public static void getSum(int num1, double num2) {System.out.println(num1 + "+" + num2 + "=" + (num1 + num2));}public static void getSum(double num1, int num2) {System.out.println(num1 + "+" + num2 + "=" + (num1 + num2));}
}
在示例 1 中,getSum(1, 2) 调用的是参数为两个 int 型的方法,getSum(1.5, 2.5) 和 getSum(5, 5.5) 调用的是参数为两个 double 型的方法,因此运行上述代码得到的输出结果是:
1+2=3
1.5+2.5=4.0
5.0+5.5=10.5
在示例 2 中,getSum(1, 2) 可以同时匹配两个方法,任何一个方法都不比另一个方法更匹配,因此为歧义调用,导致编译错误。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态