可变长参数:
可变长参数可以接受任意个数的实参,形参实际上是一个数组。
语法形式:
方法名称(类型 参数1,类型 参数2,类型...可变长参数)
*可变长参数一定是方法的最后一个参数
public void summ(double...num,String test){//可变长参数必须放在最后
System.out.println("=====");
}
在可变长参数的方法中,可以将可变长参数当成数组使用。可变长参数基本实例:
package test01; public class ChangeB { /** * @param Change */ public double summ(double...num){ double summ=0; for(int i = 0;i < num.length; i++){ summ += num[i]; } return summ; } public static void main(String[] args) { ChangeB ch = new ChangeB(); double total = ch.summ(1,2,3); System.out.println("bianchang:"+total); } }
可变长参数方法的调用,改变上述调用方法:
ChangeB ch = new ChangeB();//实例化
System.out.println("不传参数调用:"+ch.summ());
System.out.println("传入一个参数的调用:"+ch.summ(6.6));//值为6.6
System.out.println("传入二个参数的调用:"+ch.summ(1.3,2.5));//值为3.8
System.out.println("传入三个参数的调用:"+ch.summ(1.1,2.2,3.4));//值为6.7
在使用可变长参数方法是还需要注意几点:
在一个类中同名方法一个为单参数,一个为可变长参数时,如果实参只传入一个参数时匹配单参数和可变长参数2个方法,单实际上只选择单参数方法,举例说明:
package test01; public class ChangeB { /** * @param Change */ public double summ(double...num){//可变长参数方法 double summ=0; for(int i = 0;i < num.length; i++){ summ += num[i]; } System.out.println("可变长");//证明调用的是单参数还是可变长参数 return summ; } public double summ(double num){//单参数方法 double summ1=0; summ1 = num; System.out.println("单参数");//证明调用的是单参数还是可变长参数 return summ1; } public static void main(String[] args) { ChangeB ch = new ChangeB();//实例化 System.out.println(ch.summ(9.8)); } }
结果:
单参数
9.8
传入的实参,调用的方法不能跟2个方法匹配(可变长):
情况1:
public void summ(double...num){//可变长参数方法1 System.out.println("====="); } public void summ(double num1,double...num){//可变长参数方法2 System.out.println("====="); } public static void main(String[] args) { ChangeB ch = new ChangeB();//实例化 ch.summ("sss");//编译错误处 }//
情况2:(这个就更是错的)
public void summ(double...num){//可变长参数方法1,错误 System.out.println("====="); } public void summ(double...num1){//可变长参数方法2,错误 System.out.println("====="); } public static void main(String[] args) { ChangeB ch = new ChangeB();//实例化 ch.summ("sss"); }//