1. 介绍
在写一个方法的时候,有可能会出现不知道有多少个参数,而最常见的则是运用方法重写方法。如下:
public void test(int a){
....
}
public void test(int a, String b){
....
}
public void test(int a, String b, int c){
....
}
若一直用重构的方式重新写函数,这样也会增加代码量,因此,在JDK1.5新增语法,新特性,动态参数或者是可变参数的意思。
数据类型 …参数名称 如:String …params
0)可变参数本质是数组。
1) 使用 …将参数声明为可变长参数。
2)可变长参数必须是最后一个参数。
3)一个方法只允许拥有一个可变参数。
4)相同方法,没有可变长参数的方法优秀级高于可变长参数的方法。
2. 代码解释。
1.使用 ...将参数声明可变长参数,且本质是数组。
public class T4 {
public static void test(String ...params) {
System.out.println("进入 ———1");
for (String str : params) {
System.out.println(str);
}
}
public static void main(String[] args) {
test("a") // a
test("a","b","c"); // a b c
test("a","2"); //a 2
}
}
2.可变长参数必须是最后一个参数。若不是最后,则会出现不知谁传递给(形参)的二义性。
public class T4 {
public static void test(String t,String ...params) {
System.out.println("进入 ———1");
System.out.println(t);
for (String str : params) {
System.out.println(str);
}
}
public static void main(String[] args) {
//此时输出为 a b c 但是此时a是赋予给形参t,b与c是赋予params中
test("a","b","c");
}
}
3.相同方法,没有可变长参数的方法优秀级高于可变长参数的方法。
public class T4 {
public static void test(String a,String ...params) {
System.out.println("进入 ———1");
System.out.println(a);
for (String str : params) {
System.out.println(str);
}
}
public static void test(String a) {
System.out.println("进入 ———2");
System.out.println(a);
}
public static void test(String a, String b) {
System.out.println("进入 ———3");
System.out.println(a);
System.out.println(b);
}
public static void main(String[] args) {
test("q"); //此时函数进入的是 2
test("q","w");//此时函数既可以进入3 也可以进入1,但是3的优先级大于1,即选择进入3
test("q","w","e");//此时函数进入的是1
}
}