集合(12):可变参数
集合(12):可变参数
前言案例:
public class ArgsDemo { public static void main(String[] args) { //求两个数之和 int a = 10; int b = 20; sum(a, b); //求三个数之和 int c = 30; sum(a, b, c); //求四个数之和 int d = 40; sum(a, b, c, d); } public static void sum(int a, int b) { System.out.println(a + b); } public static void sum(int a, int b, int c) { System.out.println(a + b + c); } public static void sum(int a, int b, int c, int d) { System.out.println(a + b + c + d); } }
根据我们的案例发现,方法名一样,参数列表中的数据类型一样,只是个数不一样
这时候,每增加一个参数,方法就要新写一个,非常麻烦,该怎么办呢?
Java替我们考虑到了这一点,提供了一个技术给我们,叫做:可变参数
1、可变参数的概述
定义方法时,参数个数不确定的时候使用
2、格式
修饰符 返回值类型 方法名(数据类型... 变量名){}
注意:数据类型紧跟着三个点,此处不是省略点
举例:public static void sum(int... ints){}
3、可变参数的使用案例
public class ArgsDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
int d = 40;
//求两个数之和
sum(a, b);
//求三个数之和
sum(a, b, c);
//求四个数之和
sum(a, b, c, d);
//也可以对很多个数字求和
sum(312,123,1,312,13,13,13,13,13,1,34,5,4,3,131,3);
}
//修饰符 返回值类型 方法名(数据类型... 变量名){}
//在main方法外,使用可变参数的形式定义加法的方法
public static void sum(int... ints){
/*
System.out.println(ints);
输出结果为:
[I@1540e19d
[I@677327b6
[I@14ae5a5
[I@7f31245a
由此可知,该变量是一个数组
*/
//利用数组的方式求和
int sum = 0;
for(int i=0;i
4、Arrays工具类中的有一个方法,用到了可变参数
Arrays类中的asList()方法:
public static List asList(T... a)
参数类型不确定,用T表示
案例:
public class ArgsDemo {
public static void main(String[] args) {
//public static List asList(T... a)
//该方法是静态的,通过类名直接调用
//Arrays.asList().var,返回一个List类型
List strings = Arrays.asList("李玉伟", "李嘉诚", "马化腾");
//for循环遍历
for(String s : strings){
System.out.println(s);
}
}
}
执行结果如下:
李玉伟
李嘉诚
马化腾
Process finished with exit code 0
5、注意事项
当一个方法参数列表中有可变参数,也有其他参数,
那么,可变参数要放在最后一个,否则编译会报错
案例:
import java.util.Arrays;
import java.util.List;
public class ArgsDemo {
public static void main(String[] args) {
sum("阿伟首富",12,23,35,58,68);
}
//当方法定义的时候既有固定值,也有可变参数的数的时候,将可变参数的定义放在最后一个
public static void sum(String s,int... ints){
int sum = 0;
for(int i=0;i