马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 零度非安全 于 2017-3-12 14:12 编辑
点击图片穿越到 索引帖,听说有惊喜!
☟
可变参数(The variable arguments)是 JDK 1.5 版本新增的功能。可变参数是指在声明方法时不给参数列表中从某项直
至最后一项参数的名字和个数,但这些参数的类型必须相同。可变参数使用“ . . . ”表示若干个参数,这些参数的类型必须
相同,最后一个参数必须是参数列表中的最后一个参数。例如:
那么,在方法 f 的参数列表中,从第一个到最后一个参数都是 int 型,但连续出现的 int 型参数的个数不确定,称 x 是方法
f 的参数列表中可变参数的“参数代表”。比如下面这个:
public void g(double a,int ... x)
那么,在方法 g 的参数列表中,第 1 个参数是 double 型,第 2 个至最后一个参数是 int 型,但连续出现的 int 型参数的
个数不确定,称 x 是方法 g 的参数列表中可变参数的“参数代表”。
参数代表可以通过下标运算来表示参数列表中的具体参数,即 x[0]、x[1]、. . .、x[m] 分别表示 x 代表的第 1 ~ m 个参数。
例如,对于上述方法 g,x[0]、x[1] 就是方法 g 的整个参数列表中的第 2 个参数和第 3 个参数。对于一个参数代表,例如 x
,那么 x.length 等于 x 所代表的参数的个数。参数代表非常类似我们自然语言中的“等等”,英语中的 and so on。
对于类型相同的参数,如果参数的个数需要灵活地变化,那么使用参数代表可以使方法的调用更加灵活。如果需要经常计算
若干个整数的平均数,例如:
(23 + 78 + 56)/ 3,(123 + 22 + 256 + 3)/ 4,(3 + 202 + 101 + 1309 + 257 + 88)/ 6
由于整数的个数经常需要变化,那么就可以使用下列不带不变参数的方法来计算平均数:
double getResult(double e,int ... x);
那么,getResult(1.0/3,23,78,56) 就可以返回 23、78、56 的平均数。
在下面的例子中,有两个 Java 源文件,即 Computer.java 和 Example.java,其中,Computer 类的方法 getResult() 使
用了参数代表,可以计算若干个整数的平均数,运行效果如下图所示:
相关代码如下:
Computer.javapublic class Computer{
public double getResult(double a,int ... x){
double result = 0;
int sum = 0;
for(int i = 0;i < x.length;i++){
sum = sum + x[i];
}
result = a * sum;
return result;
}
}
VariParameter.javapublic class VariParameter{
public static void main(String[] args){
Computer computer = new Computer();
double result = computer.getResult(1.0/3,10,20,30); //"参数代表"x代表了3个参数
System.out.println("10,20,30的平均数:" + result);
result = computer.getResult(1.0/6,66,12,5,89,2,51); //"参数代表"x代表了6个参数
System.out.println("66,12,5,89,2,51的平均数:" + result);
}
}
在 第 015 讲 曾介绍 for 循环语句对于遍历数组的增强功能。对于可变参数,Java 也提供了增强的 for 语句,允许使用
for 语句遍历参数代表所代表的参数。for(声明循环变量:参数代表){
.
.
.
}
上述 for 语句的作用就是,“对于循环变量依次取参数代表的每一个参数的值”。因此,可以将上述 Computer 类中的 for
循环语句更改为:
for(int param:x){
sum = sum + param;
}
【特别注意】贴子中的栗子希望鱼油们能自觉的手动敲上去,不要单纯的复制粘贴保存,然后编译运行。
❁
❁
|