可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。
如下所示:print()方法,用于打印接收到的所有int类型的数的和,但是不知道具体有几个int类型的数,这个时候就可以用可变参数。
public class app {
public static void main(String[] args) {
print(100,89,3,5);
}
public static void print(int...num){
int sum =0;
for (int i : num) {
sum+=i;
}
System.out.println(sum);
}
}
注意:
1.如果有方法重载,那拥有可变参数的方法会是最后一个被选择的。
2 .可变参数只能位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项。
通过反编译,可以看出JAVA底层也是通过建立数组的方式来执行这段代码的。已下是反编译之后的代码,可以看到,传入的参数被创建成了一个新数组,print方法中的参数就是那个新数组。
public static void main(String args[])
{
print(new int[] {
100, 89, 3, 5
});
}
public static transient void print(int num[])
{
int sum = 0;
int ai[];
int k = (ai = num).length;
for (int j = 0; j < k; j++)
{
int i = ai[j];
sum += i;
}
System.out.println(sum);
}
网友评论