0%

java可变参数

介绍

在 Java 5 中提供了变长参数,允许在调用方法时传入不定长度的参数。变长参数是 Java 的一个语法糖,本质上还是基于数组的实现,增加了编程一定的自由度。

举例

一、普通数组:

普通参数的用法如下:

1
2
3
4
5
6
7
8
9
// 普通数组的用法
public static int sum(int []nums){
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum+=nums[i];
}

return sum;
}

需要注意的是这种情况下使用sum(1,2,3)是会发生错误,所以只能通过sum(new int []{1,2,3,4})调用。

二、可变参数

可变参数的用法如下:

1
2
3
4
5
6
7
8
//可变参数的用法
public static int sum(int... nums){
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum+=nums[i];
}
return sum;
}

和数用数组作为参数相比,调用方法:sum(1,2)、sum(1,2,3)、sum(new int []{1,2,3,4})都可以。

三、需要注意的点

  • 一个函数只能有一个可变参数,同时定义两个可变参数会报错

  • 当函数既有可变参数又有普通参数时,可变参数放在最后面

    1
    2
    3
    4
    5
    //如果有其他参数,可变参数需要放在最后
    public static void fun(String str,int... nums){
    if(nums!=null&&nums.length!=0)
    System.out.println(str+nums[0]);//只是举例无实际意义
    }
  • 可变参数可以不输入,如上面的fun函数,可以直接fun("nihao")进行调用,但是如果参数是数组不能这样调用

总结

​ 可变参数的本质还是利用数组进行传参,不过在使用方式上有些许不同,可以自己不使用,但是看到别人写这样的代码还是需要知道是什么。