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

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值