首页 / JAVA / Java 可变长参数列表
Java 可变长参数列表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 可变长参数列表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1858字,纯文字阅读大概需要3分钟。
内容图文
![Java 可变长参数列表](/upload/InfoBanner/zyjiaocheng/1323/73ea6bb44ff449fc97ab9de217fb265a.jpg)
Java中定义了变长参数,允许在调用方法时传入不定长度的参数。
定义及调用
在定义方法时,在最后一个形参后加上三点 …,就表示该形参可以接受多个参数值,多个参数值被当成数组传入。上述定义有几个要点需要注意:
-
可变参数只能作为函数的最后一个参数,但其前面可以有也可以没有任何其他参数
-
由于可变参数必须是最后一个参数,所以一个函数最多只能有一个可变参数
-
Java的可变参数,会被编译器转型为一个数组
-
变长参数在编译为字节码后,在方法签名中就是以数组形态出现的。这两个方法的签名是一致的,不能作为方法的重载。如果同时出现,是不能编译通过的。可变参数可以兼容数组,反之则不成立
public void foo(String...varargs){} foo("arg1", "arg2", "arg3"); //上述过程和下面的调用是等价的 foo(new String[]{"arg1", "arg2", "arg3"});
例如,求任意个整数的乘积。
package exercise; public class product { public static int func(int... args){ int ret = 1; for(int i:args) ret *= i; return ret; } publicstaticvoid main(String[] args){ System.out.println(func(1,2,3)); System.out.println(func(2,2,2,2,2,2)); System.out.println(func(100,1000)); } }
由于可变长参数就是被编译器转化为数组实现的,我们完全可以写成以数组做参数的形式:
package exercise; public class product { public static int func(int[] args){ int ret = 1; for(int i:args) ret *= i; return ret; } publicstaticvoid main(String[] args){ System.out.println(func(newint[]{1,2,3})); System.out.println(func(newint[]{2,2,2,2,2,2})); System.out.println(func(newint[]{100,1000})); } }
方法重载
优先匹配固定参数
调用一个被重载的方法时,如果此调用既能够和固定参数的重载方法匹配,也能够与可变长参数的重载方法匹配,则选择固定参数的方法:
public class Varargs { public static void test(String... args) { System.out.println("version 1"); } publicstaticvoid test(String arg1, String arg2) { System.out.println("version 2"); } publicstaticvoid main(String[] args) { test("a","b"); //version 2 优先匹配固定参数的重载方法 test(); //version 1 } }
匹配多个可变参数
调用一个被重载的方法时,如果此调用既能够和两个可变长参数的重载方法匹配,则编译出错:
public class Varargs { public static void test(String... args) { System.out.println("version 1"); } publicstaticvoid test(String arg1, String... arg2) { System.out.println("version 2"); } publicstaticvoid main(String[] args) { test("a","b"); //Compile error } }
参考链接:http://www.runoob.com/w3cnote/java-varargs-parameter.html
原文:https://www.cnblogs.com/lfri/p/10553555.html
内容总结
以上是互联网集市为您收集整理的Java 可变长参数列表全部内容,希望文章能够帮你解决Java 可变长参数列表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。