技术中心

这里象征着我们的态度和能力

>Java不定长度参数
作者:中国IT实验室    来源:中国IT实验室    发布时间:2012-03-12      浏览次数:7119
分享到:
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

    在调用某个方法时,若是方法的参数个数事先无法确定该如何处理?例如System.out.printf()方法中并没有办法事先决定要给的参数个数,像是:

    ?

    1

    2

    3 System.out.printf("%d",10);

    System.out.printf("%d %d", 10, 20);

    System.out.printf("%d %d %d", 10, 20, 30);

    在J2SE 5.0之后开始支持不定长度参数(Variable-length Argument),这可以让您轻松的解决这个问题,直接来看下面的范例:

    ?

    MathTool.java 1

    2

    3

    4

    5

    6

    7

    8

    9 public class MathTool {

    public static int sum(int … nums ) { //使用…声明参数

    int sum = 0;

    for(int num : nums) {

    sum += num;

    }

    return sum;

    }

    }

    要使用不定长度参数,在声明参数行时要在类型关键词后加上…,而在sum()方法的区块中可以看到,实际上nums是一个数组,编译器会将参数行的(int … nums)解释为(int[] nums),可以以下范例的方式制定各种长度的参数给方法来使用。

    ?

    TestVarargs.java 01

    02

    03

    04

    05

    06

    07

    08

    09

    10

    11

    12

    13

    14 public class TestVarargs {

    public static void main(String[] args) {

    int sum = 0;

    sum = MathTool.sum(1, 2);

    System.out.println("1 + 2 = " + sum);

    sum = MathTool.sum(1, 2, 3);

    System.out.println("1 + 2 +3 = " + sum);

    sum = MathTool.sum(1, 2, 3, 4, 5);

    System.out.println("1 + 2 + 3 + 4 + 5 = " + sum);

    }

    }

    执行结果:

    1 + 2 = 3

    1 + 2 +3 = 6

    1 + 2 + 3 + 4 + 5 = 15

    编译器会将传递给方法的参数解释为int数组传入至sum()中,所以实际上不定长度参数的功能也是自J2SE 5.0后所提供的编译蜜糖(Compiler Sugar)。

    在方法上使用不定长度参数时,记得必须声明的参数必须设置在参数行的最后一个。例如下面的方式是合法的:

    ?

    1

    2

    3 public void someMethod(int arg1, int arg2, int … varargs) {

    // …

    }

    但下面的方式是不合法的:

    ?

    1

    2

    3 public void someMethod(int … varargs , int arg1, int arg2) {

    // …

    }

    也无法使用两个以上的不定长度参数,例如下面的方式是不合法的:

    ?

    1

    2

    3 public void someMethod(int … varargs1, int … varargs2){

    // …

    }

    如果使用对象的不定长度参数,声明的方法相同。例如:

    ?

    1

    2

    3 public void someMethod(SomeClass… somes){

    // …

    }

4000-880-989
(24小时热线)
联系客服
微信公众号

官方公众号

小程序

©2008-2022 CORPORATION ALL Rights Reserved. 昆明奥远科技有限公司版权所有 滇ICP备09003328号-1 滇公网安备 53011102000818号 增值电信业务经营许可证号:滇B2-20110045
昆明那家网络公司好,新媒体运营,网站优化,网络推广,网站建设,网页设计,网站设计,网站推广,云南网站公司,昆明新媒体公司,云南网红主播,昆明SEO公司,昆明网站建设,昆明网络推广,昆明网站优化,昆明网站推广,红河网站建设,大理网络公司,曲靖网络公司,丽江网站设计,昭通网络公司,保山大数据服务,智慧高速建设,智慧校园服务,云南IDC服务商,网络安全测评,等保测评,网站关键词排名优化服务,服务客户尽超2000余家,一切尽在奥远科技,服务电话:13888956730