使用以上方案解决,存在:程序的扩展性差的问题(如果再有一个计算5个值相加的功能,还要再书写一个函数)
现象:有时定义函数的时候,需要根据用户传递的参数的个数来决定到底我们定义函数上参数的个数。而不是自己直接在函数上就把参数的个数写死。这种问题就可以使用可变参数来解决。
可变参数:它主要针对的是程序员定义函数的时候,参数列表而言。
格式:
修饰符 返回值类型 函数名( 可变参数 ){
}
可变参数:
参数类型…变量名
说明:其实可变参数上定义的变量名就是一个数组名, 我们在函数中就可以以数组的方式操作传递进来的所有数据,在这里相当于对数组进行求和。
package com.web;
public class Test53 {
public static void main(String[] args) {
//调用自定义函数计算和值
int sum = add(1, 7);
int sum1 = add(1, 7, 4);
int sum2 = add(1, 7, 8, 9);
System.out.println(sum);
System.out.println(sum1);
System.out.println(sum2);
}
private static int add(int... num) {
int sum = 0;
for (int i = 0; i < num.length; i++) {
sum += num[i];
}
return sum;
}
}
结论:可变参数的底层其实还是使用数组。
在使用可变参数时,需要注意两个地方:
1)当函数中除了有可变参数外,还需要其它的参数时,必须把可变参数书写在函数中参数列表的最后面
正确写法:
public static int add(int x,int ... num)
在一个类中,如果已经存在了带有可变参数的函数,该类中就不能再存在另一个相同名称的带有数组参数的函数(参数列表不相同可以同时存在,以重载的方式存在)