专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java中的可变参数

Java中的可变参数

更新时间:2022-12-12 12:44:24 来源:赢咖4 浏览881次

Java 中的可变参数 (Varargs) 是一种采用可变数量参数的方法。Java 中的可变参数简化了需要采用可变数量参数的方法的创建。

需要 Java Varargs

在 JDK 4 之前,我们不能声明一个带有变量号的方法。的论据。如果参数数量有任何变化,我们必须声明一个新方法。这种方法增加了代码的长度并降低了可读性。

在 JDK 5 之前,可以通过两种方式处理可变长度参数。一个使用重载方法(每个方法一个),另一个将参数放入一个数组,然后将该数组传递给该方法。它们都可能容易出错并且需要更多代码。

为了解决这些问题,JDK 5 中引入了可变参数 (Varargs)。从 JDK 5 开始,我们可以声明一个参数数量可变的方法。这种类型的方法称为 Varargs 方法。varargs 特性提供了一个更简单、更好的选择。

可变参数的语法

在内部,Varargs 方法是通过使用单维数组概念实现的。因此,在 Varargs 方法中,我们可以通过使用 Index 来区分参数。可变长度参数由三个句点或点 (...) 指定。

例如,

public static void fun(int ... a)
{
   // 方法体
}

此语法告诉编译器可以使用零个或多个参数调用 fun()。因此,这里 a 被隐式声明为 int[] 类型的数组。

下面是用于说明上述概念的代码片段:

// Java program to demonstrate varargs
class Test1 {
	// A method that takes variable
	// number of integer arguments.
	static void fun(int... a)
	{
		System.out.println("Number of arguments: "
						+ a.length);
		// using for each loop to display contents of a
		for (int i : a)
			System.out.print(i + " ");
		System.out.println();
	}
	// Driver code
	public static void main(String args[])
	{
		// Calling the varargs method with
		// different number of parameters	
		// one parameter
		fun(100);		
		// four parameters
		fun(1, 2, 3, 4);		
		// no parameter
		fun();
	}
}

输出

参数数量:1
100
参数数量:4
1 2 3 4
参数数量:0

上面程序的解释

… 语法告诉编译器已经使用了可变参数,这些参数应该存储在由 a 引用的数组中。

变量a作为数组进行操作。在本例中,我们将数组“a”的数据类型定义为 int。所以它只能取整数值。可以使用 a.length 找出参数的数量,这是我们在 Java 中查找数组长度的方法。

注意:一个方法也可以有可变长度参数和其他参数,但是应该确保只有一个可变参数参数应该写在方法声明的参数列表的最后。例如:

int nums(int a, float b, double ... c)

在这种情况下,前两个参数与前两个参数匹配,其余参数属于c。

// Java program to demonstrate
// varargs with normal arguments
class Test2 {
	// Takes string as a argument followed by varargs
	static void fun2(String str, int... a)
	{
		System.out.println("String: " + str);
		System.out.println("Number of arguments is: "
						+ a.length);
		// using for each loop to display contents of a
		for (int i : a)
			System.out.print(i + " ");
		System.out.println();
	}
	public static void main(String args[])
	{
		// Calling fun2() with different parameter
		fun2("GeeksforGeeks", 100, 200);
		fun2("CSPortal", 1, 2, 3, 4, 5);
		fun2("forGeeks");
	}
}

输出

字符串:GeeksforGeeks
参数数量为:2
100 200
字符串:CSPortal
参数数量为:5
1 2 3 4 5
字符串:forGeeks
参数个数为:0

 

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>