[Java] Java中的可变参数方法
来源:互联网 发布:护理优化服务流程 编辑:程序博客网 时间:2024/06/06 03:18
可变参数方法描述
Java SE 5.0 以前的版本中,每个Java方法都有固定数量的参数,现在的版本提供了可以用可变参数数量调用的方法。
Java 中省略号 … 是代码的一部分,它表明这个方法可以接受任意数量的对象(除fmt参数之外)。
可变参数方法举例
如:printf 方法调用
System.out.printf("%d", n);和System.out.printf("%d %s", n, "widgets");
在上面两条语句中,尽管一个调用包含两个参数,另一个调用包含三个参数,但它们调用的都是同一个方法。printf 方法是这样的定义的:
public class PrintStream{ public PrintStream printf(String fmt, Object... args) { return format(fmt, args); }}
printf 方法接收两个参数,一个是格式字符串,另一个是 Object [ ] 数组,其中保存着所有的参数(如果调用者提供的是整型数组或其他基本类型值,自动装箱功能将把他们转换成对象)。现在将扫描 fmt 字符串,并将第 i 个格式说明符与 args[i] 的值匹配起来。对于 printf 实现来说, Object... 参数类型与 Object[ ] 类型完全一样。
编译器需要对 printf 的每次调用进行转换,以便将参数绑定到数组上,并在必要的时候自动装箱。
用户自己也可以定义可变参数的方法,并将参数指定为任意类型,甚至可以是基本类型。
用户自定义变参数方法
public class FirstSample {public static void main(String[] args) {double[] test = new double[]{1, 2, 3, 4, 5, 6}; System.out.println(max(test));}public static double max(double... values) {double largest = Double.MIN_VALUE;for(double temp : values) {if(temp > largest) {largest = temp;}}return largest;}}
也可以这样调用
double m = max(3.1, 40.4, -5);
编译器将 new double[ ] {3.1, 40.4, -5} 传递给 max 方法。
注
允许讲一个数组传递给可变参数方法的最后一个参数,因此可以将已经存在一个参数是数组的方法重新定义为可变参数的方法而且不会破坏任何已经存在的代码。
因此,我们阔以将 main 方法声明为下列形式:
public static void main (String... args)
参考文献
Java 核心技术 卷 I 基础知识(原书第九版) P189-P190
- Java方法中的可变参数
- [Java] Java中的可变参数方法
- java中的可变参数
- JAVA中的可变参数
- Java中的可变参数
- Java中的可变参数
- Java 中的可变参数
- Java中的可变参数
- java中的可变参数
- java中的可变参数
- Java中的可变参数
- Java中的可变参数
- Java中的可变参数
- Java中的可变参数
- Java中的可变参数
- Java中的可变参数
- Java中的可变参数
- java中的可变参数
- SVN执行清理时乱码
- $1 Unistroke Recognizer( lua )
- iOS9 新特性
- CSDN-markdown编辑器使用规范
- 什么是JavaScript?
- [Java] Java中的可变参数方法
- Linux多线程基础学习(八)私有数据
- 判断某个时间是否在某个时间范围内
- 大型网站服务器架构
- 用Redis存储Tomcat集群的Session
- Log4j源码阅读之四—doConfigure方法
- Logcat过滤不需要的系统标签
- xen虚拟化实战系列(十二)之xen虚拟机高可用之在线迁移
- 项目3 -- 顺序串算法