首页 > 代码库 > JDK5新特性--可变参数

JDK5新特性--可变参数

1.可变参数的引入

package cn;
/**
 * 可变参数
 */
public class ChangeParameterDemo {
	public static void main(String[] args) {
		//2个数求和
		int a = 10;
		int b = 20;
		int result = sum(a,b);
		System.out.println("result:"+result);
		int c = 30;
		result = sum(a,b,c);
		System.out.println("result:"+result);
	}

	public static int sum(int a,int b) {
		return a + b;
	}
	
	public static int sum(int a,int b,int c){
		return a + b + c;
	}
	
}

这样是可以实现功能,但是如果我要写一个求和的功能,我不知道调用此功能之前的参数个数,调用的时候我就知道我传递多少个实际参数。其实,意思就是我想穿几个实际参数,就传几个实际参数。怎么办呢?


思路一:使用数组啊

package cn;
/**
 * 可变参数
 */
public class ChangeParameterDemo {
	public static void main(String[] args) {
		//2个数求和
		int a = 10;
		int result = sum(new int[]{a});
		System.out.println(result);
		int b = 20;
		result = sum(new int[]{a,b});
		System.out.println(result);
		int c = 30;
		result = sum(new int[]{a,b,c});
		System.out.println(result);
		int d = 40;
		result = sum(new int[]{a,b,c,d});
		System.out.println(result);
		
		
	}

	public static int sum(int[] a) {
		int sum = 0 ;
		for (int i = 0; i < a.length; i++) {
			sum += a[i];
		}
		return sum;
	}
	
	
}

这样是可以解决问题,但是每次我们都要实例化数组对象,好烦,能不能简单点,你又不是个演员。哈哈,看玩笑的。实际上JDK5之后提供了可变参数来解决这类问题。


思路二:使用JDk5之后提供的可变参数

package cn;
/**
 * 可变参数
 */
public class ChangeParameterDemo {
	public static void main(String[] args) {
		//2个数求和
		int a = 10;
		int result = sum(a);
		System.out.println(result);
		int b = 20;
		result = sum(a,b);
		System.out.println(result);
		int c = 30;
		result = sum(a,b,c);
		System.out.println(result);
		int d = 40;
		result = sum(a,b,c,d);
		System.out.println(result);
		
		
	}

	public static int sum(int... a) {
		int sum = 0 ;
		for (int i = 0; i < a.length; i++) {
			sum += a[i];
		}
		return sum;
	}
	
	
}


2.那么可变参数是什么?

  定义方法的时候不知道该定义多少个参数


3.可变参数的格式

修饰符 返回值类型 方法名(数据类型...变量名){}


4.注意事项

修饰符 返回值类型 方法名(数据类型...变量名){}

  这里额变量其实是一个数组。

  如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个。

本文出自 “11831428” 博客,请务必保留此出处http://11841428.blog.51cto.com/11831428/1862381

JDK5新特性--可变参数