一、方法重载的规则
方法名相同,参数列表不同。
参数列表不同包括,参数的个数和类型不同。如果只有参数名不同,不能算作方法重载。
如下三个方法是重载方法,它们的参数列表都是不同的。
- public void display(){}
- public void display(int n){}
- public void display(float n){}
如下两个方法不是重载方法,两个方法只是参数名不同,不满足方法重载条件。 - public void display(int n){}
- public void display(int d){}
1、方法传值问题
- 基本数据类型传值
方法中对参数的修改,不会对主方法中传来的变量值产生影响 - 引用数据类型传值
方法中对数组的改变,会影响主方法中传来的数组
二、方法重载的应用场景
当我们实现某一个功能,比如计算两个数的加法,而此时的数据可能是int、long类型,也有可能是float和double类型,如果我们定义四个方法分别计算这四种数据类型数据的和,方法名就要有四个。如果使用方法重载,只需要一个方法名就可以了,这样使用起来也更加方便。
像我们常用的println()方法,就包括多个重载的方法,用于输出不同数据类型的数据。所以,遇到方法功能相同,只是参数类型和参数个数不同的情况,就可以使用方法的重载。
三、可变参数列表
- 可以接收多个参数进行运算
- 代码实现如下:
//求和
public void sum(int... n) {
int sum=0;
for(int i:n) {
sum=sum+i;
}
System.out.println("sum="+sum);
}
public static void main(String[] args) {
ArgsDemo ad=new ArgsDemo();
ad.sum(1);
ad.sum(1,2);
ad.sum(1,2,3);
}
四、可变参数列表与数组作为参数的区别
1、可变参数列表作为参数,方法调用时可以传入0个或多个参数,传入数组也可以。数组作为方法参数,方法调用时只能传入数组。
2、可变参数列表作为方法参数时,如果有多个参数,可变参数列表只能放到最后一个位置,而且不能有多个可变参数列表作为方法参数。而数组数量没有限制。正确代码操作:
//查找
public void search(int n,int... a) {
boolean flag=false;
for(int a1:a) {
if(a1==n) {
flag=true;
break;
}
}
if(flag) {
System.out.println("找到了!"+n);
}else {
System.out.println("没找到!"+n);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ArgsDemo1 ad1=new ArgsDemo1();
ad1.search(9, 1,3,5,7,9,12);
int[] a= {1,3,5,7,9,12};
ad1.search(9, a);
}
3、可变参数的底层实现就是数组。
4、当传入方法的参数数量不确定的时候,可以考虑使用可变参数列表。
5、当方法重载的时候,可变参数列表所在的方法总是最后被访问。
五、关于javadoc命令
1、假设ArgsDemo3.java文件存储在E:study目录下。
2、打开命令行,转到E:study该目录下,输入命令:javadoc -d doc ArgsDemo3.java
则会生成很多内容。
3、打开文件夹E:study,会看到doc文件夹,打开该目录,会看到很多html文件。
4、打开index.html文件,会看到生成的文档内容。