可变参数类型: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)========");
}
}