时间:2021-05-20
1. 背景
从JDK1.5开始,Java支持个数可变的形参,类似:
public class ParamDemo { public static void main(String[] args) { String basketball = "篮球"; String football = "足球"; showSports(basketball, football); } /** * 使用个数可变形参的方法 */ public static void showSports(String... sports) { for (String sport : sports) { System.out.println(sport); } }}2. 优点
其实个数可变形参的本质就是一位数组,但是如果上面的例子采用一位数组的话,写起来要更加麻烦点。
public class ParamDemo { public static void main(String[] args) { String basketball = "篮球"; String football = "足球"; showSports(basketball, football); showSportsByArray(new String[] { basketball, football }); } /** * 使用个数可变形参的方法 */ public static void showSports(String... sports) { for (String sport : sports) { System.out.println(sport); } } /** * 使用1维数组作为形参 */ public static void showSportsByArray(String[] sports) { for (String sport : sports) { System.out.println(sport); } }}3. 注意事项
3.1 位置只能在方法的最后
由于个数可变的形参数量不确定,所以只能放到形参列表的最后。而数组形式的参数是可以放到形参列表任意位置的。
3.2 个数可变形参本质是数组,所以不能算重载
看下面的例子:
public class ParamDemo { public static void main(String[] args) { String basketball = "篮球"; String football = "足球"; showSports(basketball, football); showSportsByArray(new String[] { basketball, football }); } /** * 使用个数可变形参的方法 */ public static void showSports(String... sports) { for (String sport : sports) { System.out.println(sport); } } /** * 使用1维数组作为形参 */ public static void showSports(String[] sports) { for (String sport : sports) { System.out.println(sport); } }}编译就报错了,如下,说明啥?String...这样的形参其实还是编译为String[]运作的,所以不算重载。
Duplicate method showSports(String[]) in type ParamDemo ParamDemo.java示例
/*** 可变个数形参的方法:* javaSE 5.0 中提供了 Varargs(variable number of arguments)机制,* 允许直接定义能和多个实参相匹配的形参,从而,可以用一种更简单的方式,* 来传递个数可变的形参.** 2.具体使用:* 2.1 可变个数形参的格式: 数据类型...变量名* 2.2 当调用可变个数形参的方法时,传入的参数个数可以是0个,1个,2个,。。。* 2.3 可变个数形参的方法与本类中,形参不同的方法之间构成重载* 2.4 可变个数形参的方法与本类中的方法名相同,形参类型也相同的数组之间不过程重载。换句话说,二者不能共存。* 2.5 可变方法个数形参在方法的形参中,必须声明在末尾。* 2.6 可变个数形参在方法的形参中,最多只能声明一个可变形参。*///JDK 5.0之前:采用数组形参来定义方法,传入多个同一类型变量//public static void test(int a,String[] books);//JDK 5.0:采用可变个数形参来定义方法,传入多个同一类型变量//public static void test(int a,String...books);public class MethodArgsTest {public static void main(String[] args){MethodArgsTest test = new MethodArgsTest();test.show(12);test.show("hello");test.show("hello","world","AA","BB");// test.show(String[]{"AA","BB","CC"})}public void show(int i){}public void show(String s){System.out.println("show(String)");}public void show(String...strs){System.out.println("show(String ... strs)");for (int i=0; i<strs.length;i++) {System.out.println(strs[i]);}}// public void show(String[] strs){// }//2.5public void show(int i,String...strs){}}到此这篇关于Java语法糖之个数可变的形参的实现的文章就介绍到这了,更多相关Java 个数可变的形参内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
个人认为,提供params关键字以实现方法形参个数可变是C#语法的一大优点。在方法形参列表中,数组类型的参数前加params关键字,通常可以在调用方法时代码更加
C++编程中实现可变参数函数有多种途径,本文介绍一种最常见的实现途径,即可变参数宏方法:形参生命为省略符,函数实现时用参数列表宏访问参数。1.可变参数宏实现变参
/***获取函数的形参个数*@param{Function}func[要获取的函数]*@return{*}[形参的数组或undefind]*/functiong
Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一
在某些情况下,程序需要在定义函数时为一个或多个形参指定默认值,这样在调用函数时就可以省略为该形参传入参数值,而是直接使用该形参的默认值。为形参指定默认值的语法格