Java不定长度参数
2015-10-30 19:30
302 查看
在调用某个方法时,若是方法的参数个数事先无法确定该如何处理?例如System.out.printf()方法中并没有办法事先决定要给的参数个数,像是:
?
在J2SE 5.0之后开始支持不定长度参数(Variable-length Argument),这可以让您轻松的解决这个问题,直接来看下面的范例:
?
MathTool.java
要使用不定长度参数,在声明参数行时要在类型关键词后加上…,而在sum()方法的区块中可以看到,实际上nums是一个数组,编译器会将参数行的(int … nums)解释为(int[] nums),可以以下范例的方式制定各种长度的参数给方法来使用。
?
TestVarargs.java
执行结果:
1 + 2 = 3
1 + 2 +3 = 6
1 + 2 + 3 + 4 + 5 = 15
编译器会将传递给方法的参数解释为int数组传入至sum()中,所以实际上不定长度参数的功能也是自J2SE 5.0后所提供的编译蜜糖(Compiler Sugar)。
在方法上使用不定长度参数时,记得必须声明的参数必须设置在参数行的最后一个。例如下面的方式是合法的:
?
但下面的方式是不合法的:
?
也无法使用两个以上的不定长度参数,例如下面的方式是不合法的:
?
如果使用对象的不定长度参数,声明的方法相同。例如:
?
?
?
?
1 + 2 = 3
1 + 2 +3 = 6
1 + 2 + 3 + 4 + 5 = 15
编译器会将传递给方法的参数解释为int数组传入至sum()中,所以实际上不定长度参数的功能也是自J2SE 5.0后所提供的编译蜜糖(Compiler Sugar)。
在方法上使用不定长度参数时,记得必须声明的参数必须设置在参数行的最后一个。例如下面的方式是合法的:
?
?
?
?
相关文章推荐
- Java中的Vector和ArrayList的比较
- 进阶篇,第二章:MC与Forge的Event系统
- java面向抽象编程样例
- java自动转型
- java.lang.NoClassDefFoundError: org/aopalliance/intercept/MethodInterceptor
- Java对象相关元素的初始化过程
- 深入JVM字节码执行引擎
- 我的第一篇博客,谈谈java的值传递
- (java)leetcode Longest Common Prefix
- JAVA设计模式之工厂设计模式
- (java)leetcode Excel Sheet Column Number
- spring DelegatingFilterProxy 过滤器 的原理及运用
- JDK内置工具使用介绍推荐
- Java基础之String中equals,声明方式,等大总结
- (java)leetcode Contains Duplicate
- Spring框架中获取连接池的四种方式
- eclipse中class注释中文乱码
- SpringMVC(二) 流程控制
- Java泛型(一)
- 在java中用递归函数求出1!+2!+3!+4!。。。。。。。