Java基础—方法—12可变参数(附:可变参数与数组的关系)

1、可变参数也叫不定参数

2、概念:

Java基础—方法—12可变参数(附:可变参数与数组的关系)_第1张图片

能匹配定长的方法,那么优先匹配该方法。含有不定参数的那个重载方法是最后被选中的

上图的代码细节

    1)numbers.length==0时,直接return;很严谨

    2)如果直接sout入参numbers,输出的是地址;可以输出numbers[0],本质上就是数组

3、可变参数和数组是什么关系呢?

总体来讲:可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数。

举例说明,代码如下:

public class Args {
    public static void main(String[] args) {
        test(new int[]{1, 2, 3});
//        test(4,5,6);
    }
    public static void test(int[] args) {
        if (args.length == 0) {
            return;
        }
        for (int i = 0; i < args.length; i++) {
            // 注意这里的写法是print
            System.out.print(args[i]+"\t");
        }
    }
}

public class Args2 {
    public static void main(String[] args) {
        test(new int[]{1, 2, 3});
        test(4,5,6);
    }

    public static void test(int... args){
        if (args.length == 0) {
            return;
        }
        for (int i = 0; i < args.length; i++) {
            // 注意这里的写法是print
            System.out.print(args[i]+"\t");
        }
        System.out.println();
    }
}

①:两个方法无法重载,说明本质上都是数组:

Java基础—方法—12可变参数(附:可变参数与数组的关系)_第2张图片

②:可变参数是兼容数组类参数的:

Java基础—方法—12可变参数(附:可变参数与数组的关系)_第3张图片

③:数组类参数却无法兼容可变参数:

Java基础—方法—12可变参数(附:可变参数与数组的关系)_第4张图片

比较两个字节码文件:

Java基础—方法—12可变参数(附:可变参数与数组的关系)_第5张图片

可看博客:深度解析Java可变参数类型以及与数组的区别_java 可变参数-CSDN博客

你可能感兴趣的:(JavaSE,java,开发语言,学习)