可变长参数:
可变长参数可以接受任意个数的实参,形参实际上是一个数组。
语法形式:
方法名称(类型 参数1,类型 参数2,类型...可变长参数)
*可变长参数一定是方法的最后一个参数
1 public void summ(double...num,String test){//可变长参数必须放在最后 2 System.out.println("====="); 3 }
在可变长参数的方法中,可以将可变长参数当成数组使用。可变长参数基本实例:
1 package test01; 2 3 public class ChangeB { 4 5 /** 6 7 * @param Change 8 9 */ 10 11 public double summ(double...num){ 12 13 double summ=0; 14 15 for(int i = 0;i < num.length; i++){ 16 17 summ += num[i]; 18 19 } 20 21 return summ; 22 23 } 24 25 public static void main(String[] args) { 26 27 ChangeB ch = new ChangeB(); 28 29 double total = ch.summ(1,2,3); 30 31 System.out.println("bianchang:"+total); 32 33 } 34 35 }
可变长参数方法的调用,改变上述调用方法:
1 ChangeB ch = new ChangeB();//实例化 3 System.out.println("不传参数调用:"+ch.summ()); 5 System.out.println("传入一个参数的调用:"+ch.summ(6.6));//值为6.6 7 System.out.println("传入二个参数的调用:"+ch.summ(1.3,2.5));//值为3.8 9 System.out.println("传入三个参数的调用:"+ch.summ(1.1,2.2,3.4));//值为6.7
在使用可变长参数方法是还需要注意几点:
在一个类中同名方法一个为单参数,一个为可变长参数时,如果实参只传入一个参数时匹配单参数和可变长参数2个方法,单实际上只选择单参数方法,举例说明:
1 package test01; 2 3 public class ChangeB { 4 5 /** 6 7 * @param Change 8 9 */ 10 11 public double summ(double...num){//可变长参数方法 12 13 double summ=0; 14 15 for(int i = 0;i < num.length; i++){ 16 17 summ += num[i]; 18 19 } 20 21 System.out.println("可变长");//证明调用的是单参数还是可变长参数 22 23 return summ; 24 25 } 26 27 public double summ(double num){//单参数方法 28 29 double summ1=0; 30 31 summ1 = num; 32 33 System.out.println("单参数");//证明调用的是单参数还是可变长参数 34 35 return summ1; 36 37 } 38 39 public static void main(String[] args) { 40 41 ChangeB ch = new ChangeB();//实例化 42 43 System.out.println(ch.summ(9.8)); 44 45 } 46 47 }
结果:
单参数
9.8
传入的实参,调用的方法不能跟2个方法匹配(可变长):
情况1:
1 public void summ(double...num){//可变长参数方法1 2 3 System.out.println("====="); 4 5 } 6 7 public void summ(double num1,double...num){//可变长参数方法2 8 9 System.out.println("====="); 10 11 } 12 13 public static void main(String[] args) { 14 15 ChangeB ch = new ChangeB();//实例化 16 17 ch.summ("sss");//编译错误处 18 19 }//
情况2:(这个就更是错的)
1 public void summ(double...num){//可变长参数方法1,错误 2 3 System.out.println("====="); 4 5 } 6 7 public void summ(double...num1){//可变长参数方法2,错误 8 9 System.out.println("====="); 10 11 } 12 13 public static void main(String[] args) { 14 15 ChangeB ch = new ChangeB();//实例化 16 17 ch.summ("sss"); 18 19 }//
原文:http://www.cnblogs.com/sun-chao/p/6369201.html