java可变参数讲解
1、可变长参数方法的定义 使用…表示可变长参数,例如
1 2 3 print(String... args){ ... }
2、可变长参数的方法的调用 调用的时候可以给出任意多个参数
1 2 3 4 5 print("hello"); print("hello","lisi"); print("hello","张三");
3、注意事项 3.1 在调用方法的时候,如果能够和固定参数的方法匹配,也能够与可变长参数的方法匹配,则选择固定参数的方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public static void main(String[] args) { printf("kan ","lian ","hui "); printf("kan ","hui "); } public static void printf(String ...strings ){ StringBuilder s = new StringBuilder(); for(String x : strings){ s.append(x); } System.out.println("1." +s.toString()); } public static void printf(String str1,String str2 ){ StringBuilder s = new StringBuilder(); s.append(str1); s.append(str2); System.out.println("2." +s.toString()); }
3.2 如果要调用的方法可以和两个可变参数匹配,则出现错误
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 public static void main(String[] args) { printf("kan ","lian ","hui "); printf("kan ","hui "); } public static void printf(String ...strings ){ StringBuilder s = new StringBuilder(); for(String x : strings){ s.append(x); } System.out.println("1." +s.toString()); } public static void printf(String str1,String str2 ){ StringBuilder s = new StringBuilder(); s.append(str1); s.append(str2); System.out.println("2." +s.toString()); } public static void printf(String str1,String ... strings ){ StringBuilder s = new StringBuilder(); s.append(str1); for(String x : strings){ s.append(x); } System.out.println("3." +s.toString()); }
3.3 一个方法只能有一个可变长参数,并且这个可变长参数必须是该方法的最后一个参数.