黑马程序员_java可变参数

------- android培训、 java培训、期待与您交流! ----------

 

可变参数 :

可变的参数类型,也称为不定参数类型。英文缩写是varargus,还原一下就是variable argument type。通过它的名字可以很直接地看出来,这个方法在接收参数的时候,个数是不定的。那么好,现在就先来调用下这个方法。请看代码和输出:


  1. public class TestVarArgus {  
  2.     public static void dealArray(int... intArray){  
  3.         for (int i : intArray)  
  4.             System.out.print(i +" ");  
  5.           
  6.         System.out.println();  
  7.     }  
  8.       
  9.     public static void main(String args[]){  
  10.         dealArray();  
  11.         dealArray(1);  
  12.         dealArray(123);  
  13.     }  
  14. }  

输出:


  1. 1   
  2. 1 2 3  
  3. 通过main方法里的调用,可以看出来这个可变参数既可以是没有参数(空参数),也可以是不定长的。看到这里估计都能明白,这个不定长的参数其实和 数组参数挺像的。事实上,也确实是这么回事儿。编译器会在悄悄地把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这 是个实参个数可变的方法。请看代码:


    1. dealArray(); //dealArray(int[] intArray{});  
    2.         dealArray(1); //dealArray(int[] intArray{1});  
    3.         dealArray(123); //dealArray(int[] intArray{1, 2, 3}
  4. 需要注意的是:从上面这两段代码可以看出来,可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数。
  5. public class TestVarArgus {  
  6.     public static void dealArray(int count, int... intArray){  
  7.           
  8.     }  
  9.       
  10.     public static void dealArray(int... intArray, int count){//编译报错,可变参数类型应该作为参数列表的最后一项  
  11.           
  12.     }  
  13.       
  14.     public static void main(String args[]){  
  15.             
  16.     }  

  17. 这段代码说明了,可变参数类型必须作为参数列表的最后一项,而不能放在定长参数的前面。
------- android培训、 java培训、期待与您交流! ----------

你可能感兴趣的:(黑马程序员_java可变参数)