深度解析Java可变参数类型以及与数组的区别

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

    }
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值