Java之可变参数(例如:String ...params)

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
 	}
 }

Java之可变参数(例如:String ...params)_第1张图片

你可能感兴趣的:(Java之可变参数(例如:String ...params))