java知识点之可变参数

1.概述

可变参数是jdk1.5后出现的新特性,允许在定义方法时不在指名参数的个数,而在调用方法时直接传入需要的参数即可。

2.案例引入

示例代码:

    //输出连个参数的和
    public void output(int a,int b){
        System.out.println(a+b);
    }
    //输出三个参数的和
    public void output(int a,int b,int c){
        System.out.println(a+b+c);
    }

说明:例如以上的两个方法,由于事先并不确定传入的参数个数,因此不得不通过方法重载定义多个同名方法,这样做是相当繁琐的。

3.解决方案

第一种解决方案:

    //以数组的形式接收参数
    public void output(int[] args){
        int num=0;
        for(int i=0;i<args.length;i++){
            num+=i;
        }
        System.out.println(num);
    }

说明:将方法的参数改为数组形式可以解决参数个数不确定的问题,但是却存在另一个麻烦。即调用该方法时,每次都需要建立一个参数数组用于传入,因此这种方法也有一定的繁琐性。

第二种解决方案-利用新特性:

    //部分代码
    //利用可变参数解决参数不确定的问题
    public static void output(int... args){ 
        int num=0;
        for(int i=0;i<args.length;i++){
            num+=args[i];
        }
        System.out.println(num);
    }

    //在main方法中调用该方法
    public static void main(String[] args) {
        output(1,2,5,9);
    }

说明:利用可变参数这一新特性,在调用方法时只需要传入需要的参数即可,不需要额外建立参数数组。在使用时,将方法中的参数(上例中的args)作为数组操作即可。实际上,可变参数就是数组参数的一种简化形式,只是对参数的数组化封装由虚拟机代为完成。

4.格式

    访问修饰符 返回值类型 方法名(数据类型... 参数名){
        //具体操作
    }

例:

    public void show(String... args){
    }

5.使用错误

典型错误:

    public void show(int... agrs,String s){
        //具体代码
    }

编译报错:

The variable argument type int of the method show must be the last parameter

说明:当方法的参数中既包含可变参数又包含普通参数时,若有参数置于可变参数后面,则一定发生错误,因为这会导致代码出现歧义。正确的做法是将可变参数置于方法参数列表的最后。

修正代码:

    public void show(String s,int... agrs){
        //具体代码
    }
发布了49 篇原创文章 · 获赞 77 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章