方法重载与可变参数(java)
一.方法重载的介绍
方法重载是指在同一个类中,方法名相同的方法,但要求形参列表不同!!!
eg:System.out.println();out是PrintStream类型
二.方法重载的好处
(1)减少起名的麻烦
(2)减少记名的麻烦
三.方法重载案例
public class Calculate { public static void main(String[] args) { Calculate s = new Calculate(); System.out.println(s.calculate(6,6)); System.out.println(s.calculate(1.1,6)); System.out.println(s.calculate(6,1.1)); System.out.println(s.calculate(1,2,3)); } int calculate(int x,int y) { System.out.println("calculate(int x,int y)已被调用"); return x+y; } double calculate(int x,double y) { System.out.println("calculate(int x,double y)已被调用"); return x+y; } double calculate(double x,int y) { System.out.println("calculate(double x,int y)已被调用"); return x+y; } int calculate(int x,int y,int z) { System.out.println("calculate(int x,int y,int z)已被调用"); return x+y+z; } }
运行结果如图所示:
calculate(int x,int y)已被调用 12 calculate(double x,int y)已被调用 7.1 calculate(int x,double y)已被调用 7.1 calculate(int x,int y,int z)已被调用 6 进程已结束,退出代码0
四.方法重载的细节
(1)方法名必须相同
(2)形参列表必须不相同(形参类型,形参个数,两个必须有一个不同,形参名没要求)
(3)返回值类型没要求,即与返回值类型无关!!!
五.可变参数介绍
(1)基本概念:java中可以将同一个类中,同名同功能但参数个数不同的方法,封装成一个方法,就可以通过可变参数实现
(2)基本语法:访问修饰符 返回值类型 方法名(数据类型... 形参名)
(3)可变参数案例:
public class Calculate { public static void main(String[] args) { Calculate s = new Calculate(); System.out.println("sum="+s.sum(1,3,5,7,9)); } public int sum(int ... x) { int sum=0; for(int i=0;i< x.length;i++) { sum=sum+x[i]; } return sum; } }
运行结果如图:
sum=25 进程已结束,退出代码0
由此可见同样是实现求和,可变参数要比方法重载方便很多.
六.可变参数细节
(1)可变参数的实参可以为0个或者任意个
(2)可变参数的实参可以为数组
public class Calculate { public static void main(String[] args) { Calculate s = new Calculate(); int [] a={1,2,3}; System.out.println("sum="+s.sum(a)); } public int sum(int ... x) { int sum=0; System.out.println(x.length); for(int i=0;i< x.length;i++) { sum=sum+x[i]; } return sum; } }
运行结果如下:
3 sum=6 进程已结束,退出代码0
可见当可变参数为数组时,其实就是将数组中的所有元素传进去.
(3)可变参数的本质就是数组
上方案例访问可变参数时就是用下标的形式
(4)可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后
(5)一个形参列表中只能出现一个可变参数