鱼C论坛

 找回密码
 立即注册
查看: 3998|回复: 1

[系列教程] 【Java 教程(原创)】024.参数传值——可变参数

[复制链接]
发表于 2017-3-12 14:02:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 零度非安全 于 2017-3-12 14:12 编辑

点击图片穿越到 索引帖,听说有惊喜!

☟



可变参数(The variable arguments)是 JDK 1.5 版本新增的功能。可变参数是指在声明方法时不给参数列表中从某项直

至最后一项参数的名字和个数,但这些参数的类型必须相同。可变参数使用“ . . . ”表示若干个参数,这些参数的类型必须

相同,最后一个参数必须是参数列表中的最后一个参数。例如:

  1. public void f(int ... x)
复制代码

那么,在方法 f 的参数列表中,从第一个到最后一个参数都是 int 型,但连续出现的 int 型参数的个数不确定,称 x 是方法

f 的参数列表中可变参数的“参数代表”。比如下面这个:

  1. 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。

对于类型相同的参数,如果参数的个数需要灵活地变化,那么使用参数代表可以使方法的调用更加灵活。如果需要经常计算

若干个整数的平均数,例如:

  1. (23 + 78 + 56)/ 3,(123 + 22 + 256 + 3)/ 4,(3 + 202 + 101 + 1309 + 257 + 88)/ 6
复制代码

由于整数的个数经常需要变化,那么就可以使用下列不带不变参数的方法来计算平均数:

  1. double getResult(double e,int ... x);
复制代码

那么,getResult(1.0/3,23,78,56) 就可以返回 23、78、56 的平均数。

在下面的例子中,有两个 Java 源文件,即 Computer.java 和 Example.java,其中,Computer 类的方法 getResult() 使

用了参数代表,可以计算若干个整数的平均数,运行效果如下图所示:

VariParameter.jpg

相关代码如下:

Computer.java
  1. public class Computer{
  2.    
  3.     public double getResult(double a,int ... x){
  4.         double result = 0;
  5.         int sum = 0;
  6.         for(int i = 0;i < x.length;i++){
  7.             sum = sum + x[i];
  8.         }
  9.         result = a * sum;
  10.         return result;
  11.     }
  12.    
  13. }
复制代码

VariParameter.java
  1. public class VariParameter{
  2.    
  3.     public static void main(String[] args){
  4.         Computer computer = new Computer();
  5.         double result = computer.getResult(1.0/3,10,20,30);         //"参数代表"x代表了3个参数
  6.         System.out.println("10,20,30的平均数:" + result);
  7.         result = computer.getResult(1.0/6,66,12,5,89,2,51);         //"参数代表"x代表了6个参数
  8.         System.out.println("66,12,5,89,2,51的平均数:" + result);
  9.     }
  10.    
  11. }
复制代码

第 015 讲 曾介绍 for 循环语句对于遍历数组的增强功能。对于可变参数,Java 也提供了增强的 for 语句,允许使用

for 语句遍历参数代表所代表的参数。
  1. for(声明循环变量:参数代表){
  2.     .
  3.     .
  4.     .
  5. }
复制代码

上述 for 语句的作用就是,“对于循环变量依次取参数代表的每一个参数的值”。因此,可以将上述 Computer 类中的 for

循环语句更改为:

  1. for(int param:x){
  2.     sum = sum + param;
  3. }
复制代码


【特别注意】贴子中的栗子希望鱼油们能自觉的手动敲上去,不要单纯的复制粘贴保存,然后编译运行。


&#10049;



&#10049;


本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-13 09:38:52 | 显示全部楼层
我又前来学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 04:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表