JAVA--可变长参数

可变长参数:

可变长参数可以接受任意个数的实参,形参实际上是一个数组。

 

语法形式:

方法名称(类型 参数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 }//

 

 

 

posted @ 2017-02-06 09:52  爱潜水的小八  阅读(354)  评论(0编辑  收藏  举报