可变参数类型:variable argument type
1.可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数
//说明:可变参数可以兼容数组参数
public class TestVarArgus {public static void dealArray(int... intArray) {for (int i : intArray)System.out.print(i + " ");System.out.println();}public static void main(String args[]) {int[] intArray = { 1, 2, 3 };dealArray(intArray);// 通过编译,正常运行}
}//说明:反过来就不行了。。。
public class TestVarArgus {public static void dealArray(int[] intArray) {for (int i : intArray)System.out.print(i + " ");System.out.println();}public static void main(String args[]) {dealArray(1, 2, 3);// 编译错误}
}
2.可变参数类型必须作为参数列表的最后一项,而不能放在定长参数的前面。
public class TestVarArgus {public static void dealArray(int count, int... intArray) {//编译正确}public static void dealArray(int... intArray, int count) {// 编译报错,可变参数类型应该作为参数列表的最后一项}
3.能匹配定长的方法,那么优先匹配该方法。含有不定参数的那个重载方法是最后被选中的。
4.main方法的参数就是一个数组类型的,那么它其实也是可以改成不定参数类型
package dealArray;
/*** @author :lijunxuan* @date :Created in 2019/7/21 20:40* @description :* @version: 1.0*/
public class variableArrayTest {public static void variableArray(int ... intArray){for (int i : intArray) {System.out.print(i+" ");}System.out.println();}public static void main(String[] args) {variableArray();//intArray:{}System.out.println("=======variableArray()=========");variableArray(1,2);//intArray:{1,2}System.out.println("========= variableArray(1,2)=======");variableArray(1,2,3);//intArray:{1,2,3}System.out.println("========variableArray(1,2,3)========");}
}