可变参数与数组

Posted xinxin-ting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可变参数与数组相关的知识,希望对你有一定的参考价值。

初学时,不知道这 3个点  是什么意思,后来才知道 这是可变参数。 也可以理解成是数组。
public static String handleSrc(String... srcArr) throws Exception {
    String exportBaseSrc = System.getProperty("user.home");
    File file = new File(exportBaseSrc);
    if (!file.exists()) {
        throw new Exception("未找到根目录异常");
    }
    String src = exportBaseSrc;
    if (CheckUtils.isNotEmpty(srcArr)) {
        for (String typeStr : srcArr) {
            if (CheckUtils.isNotEmpty(typeStr)) {
                src += "/" + typeStr;
            }
        }
    }
    return src;
}

  下面说下,可变参数和数组作为参数时的区别?

1,可变参数,可以是多个,或者没有。比如:如果我调用上面那个方法:也可以这样,handleSre();参数什么也不用写

2,可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数;实例:

说明:可变参数可以兼容数组参数 
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);// 编译错误
	}
}

3,如果一个方法有多个参数,可变参数应放到最后。比如:

public class TestVarArgus {
	public static void dealArray(int count, int... intArray) {
            //编译正确
	}
 
	public static void dealArray(int... intArray, int count) {
		// 编译报错,可变参数类型应该作为参数列表的最后一项
 
	}

}

  

 

 

以上是关于可变参数与数组的主要内容,如果未能解决你的问题,请参考以下文章

Chapter5_初始化与清理_数组初始化与可变参数列表

java中可变参数

java中的可变参数

JAVA基础_可变参数

是否可以解决“为可变参数参数创建 T 的通用数组”编译器警告?

如何通过可变参数模板将多个构造函数参数转发到数组初始值设定项列表?