• JDK1.5后的新特性之一:可变参数


      Java中的可变参数

      Java1.5后出现了一个新特性,即可变参数,格式为:类型 …参数

    例如:

      总的来说,可变参数可以当成是数组来用:

     1 public void testSum() {
     2         System.out.println(sum(1,2,3,4,5));
     3     }
     4     
     5 public int sum(int ...nums) {
     6         int sum = 0;
     7         for(int i:nums) {
     8             sum +=i;
     9         }
    10         return sum;    
    11     }

      如果方法参数中不止有可变参数,还有别的类型的参数,那么可变参数应该放到方法列表中的最后才不会报错:

     1 public void testSum() {
     2         System.out.println(sumPlusX(100,1,2,3,4,5));
     3     }
     4     
     5 public int sumPlusX(int x,int ...nums) {
     6         int sum = 0;
     7         for(int i:nums) {
     8             sum +=i;
     9         }
    10         return sum+x;
    11         
    12     }

      可以直接用数组来满足参数是可变参数的方法:

     1 public void testSum() {
     2         int[] nums = {1,2,3,4,5};
     3         System.out.println(sum(nums));
     4     }
     5     
     6 public int sum(int ...nums) {
     7         int sum = 0;
     8         for(int i:nums) {
     9             sum +=i;
    10         }
    11         return sum;
    12         
    13     }

      最后我们再来看一看比较典型的采用可变参数的方法,在数组工具类Arrays中的asList方法:

      

      从方法参数列表可以看到这也是一个可变参数,接收的是对象,记住是对象!等下我们就可以看到为什么这样强调了。

    我们先来一个简单的例子:

    1 public void testAsList() {
    2         List list = Arrays.asList("1","2","3");
    3         System.out.println(list);
    4     }

    输出:

      

    再来一个简单的例子:

    1 public void testAsList() {
    2         String[] str = {"1","2","3","4"};
    3         List list = Arrays.asList(str);
    4         System.out.println(list);
    5     }

    输出:

      

    最后一个例子:

    1 public void testAsList() {
    2         int[] nums = {1,2,3,4,5};
    3         List list = Arrays.asList(nums);
    4         System.out.println(list);
    5     }

    输出:

      

      前面说过,可以将可变参数当成数组来处理,也可以用数组来满足参数列表为可变参数,对于可变参数是类型来说,对象数组依然可以满足可变参数,但是基本类型数组,因为数组中的元素并不是类型对象,所以只能将整个数组作为一个对象,因此就出现上面第三种情况。

      当然如果我们将上面的例子将基本类型改变为其对象包装类,那么就又可以了:

    1 public void testAsList() {
    2         Integer[] nums = {1,2,3,4,5};
    3         List list = Arrays.asList(nums);
    4         System.out.println(list);
    5     }

    输出:

      

      

  • 相关阅读:
    uniapp微信小程序主包vendor.js过大
    uniapp 微信小程序实现微信分享
    uniapp 解决H5跨域问题
    AT2339[AGC011C]Squared Graph【黑白染色】
    6. Z 字形变换
    PCl1.12.0安装
    C#中两个冒号(::)的作用 转
    只代理中国大陆
    C语言在Linux上的基本开发环境
    在linux上使用命令操作阿里云盘下载上传分享文件
  • 原文地址:https://www.cnblogs.com/fjdingsd/p/5272079.html
Copyright © 2020-2023  润新知