【Java方法笔记】3-4 可变参数
§3-4 可变参数
有时候,对于同样的方法,若所选参数不定,用枚举方法重写方法(方法重载)会大幅增加代码量,使得这一过程变得枯燥繁琐。在 Java 5 中提供了可变参数,允许在调用方法时传入同类型不定长度的参数。本节将介绍 Java 中的可变参数。
3-4.1 介绍:可变参数
从 JDK 1.5 开始,Java 支持向一个方法传递同类型的可变参数。欲引入可变参数,只需在方法声明中,在指定参数类型后加上省略号...
,例如:
(int... nums)
(double... reals)
可变参数大大减少了因参数个数不同导致的方法重写的代码量,减少冗余工作,提高开发效率。
下面将从几个例子出发,理解可变参数。
3-4.2 例子
我们先来定义一个含有可变参数的空方法:
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.empty();
}
public void empty(double... nums) {
System.out.println(nums);
}
}
编译后运行,如图所示:
此时,我们向其传入参数:
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.empty(1.0,2.5,3.14,2.333,10492,10086);
}
public void empty(double... nums) {
System.out.println(nums[0]);
System.out.println(nums[1]);
System.out.println(nums[2]);
System.out.println(nums[3]);
System.out.println(nums[4]);
System.out.println(nums[5]);
}
}
编译后运行,结果如图:
鉴于以上所知,我们可以:
遍历数组并输出
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.printNums(1.0,2.5,3.14,2.333,10492,10086);
}
public void printNums(double... nums) {
if (nums.length == 0) {
System.out.println("No data received. ");
return;
}
for (int num = 0; num < nums.length; num++) {
System.out.println("Number " + (num + 1) + " is " + nums[num]);
}
}
}
编译后运行,结果如图:
数组中输出最大值 / 最小值
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.printNums(1.0,2.5,3.14,2.333,10492,10086);
demo04.printMax(1.0,2.5,3.14,2.333,10492,10086);
}
public void printNums(double... nums) {
if (nums.length == 0) {
System.out.println("No data received. ");
return;
}
for (int num = 0; num < nums.length; num++) {
System.out.println("Number " + (num + 1) + " is " + nums[num]);
}
}
public void printMax(double... nums) {
if (nums.length == 0) {
System.out.println("No data received. ");
return;
}
double result = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] > result) {
result = nums[i];
}
}
System.out.println("The maximum value is " + result);
}
}
编译后运行,得结果:
3-4.3 注意事项与细节
- 可变参数的实参可以为 0 个至任意多个;
- 可变参数的实参可以为数组;
- 可变参数的本质就是数组;
- 可变参数与普通参数一起作为形参时,可变参数必须位于最后;
- 一个方法最多只能有一个可变参数。