集合(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