可变参数

测试JDK中具有可变参数的类Arrays.asList()方法。分别传多个参数、传数组,传数组又传参的情况。

注意:传入基本数据类型数组的问题。

从JDK 5开始, Java 允许为方法定义长度可变的参数。语法:

                  public void foo(int … args){

                  }

注意事项:

调用可变参数的方法时, 编译器将自动创建一个数组保存传递给方法的可变参数,因此,程序员可以在方法体中以数组的形式访问可变参数

可变参数只能处于参数列表的最后, 所以一个方法最多只能有一个长度可变的参数

 

package testFor;

import java.util.Arrays;
import java.util.List;

import org.junit.Test;

public class testSum {
    @Test
    public void testSum(){
        sum(1,2,3,4);
        int arr[]={5,6,7};
        sum(arr);
    }
    public void sum(int ...nums){
        //可变参数当成数组
        int sum=0;
        for(int i:nums){
            sum+=i;
        }
        System.out.println(sum);        
    }

    //可变参数注意的问题
//    public void aa(int ...nums,int s){}//不可以
//    public void bb(int s ,int ...nums){}//可以

    @Test
    public void  bb(){
        //public static <T> List<T>asList(T... a)
        List list=Arrays.asList("1","2","3");
        System.out.println(list);//[1, 2, 3]
        
        String arr[]={"1","2","3","4"};
        list=Arrays.asList(arr);
        System.out.println(list);//[1, 2, 3, 4]
        
        int nums[]={1,2,3,4,5};
        list=Arrays.asList(nums);//存储只是一个对象,因为asList的参数要求是对象
        System.out.println(list);//[[I@120d62b]
        
        Integer nums2[]={1,2,3,4,5};//Integer,基本类型自动装箱
        list=Arrays.asList(nums2);
        System.out.println(list);//[1, 2, 3, 4, 5]
        
    }

}

 

posted @ 2018-05-04 20:33  邓不利多  阅读(81)  评论(0编辑  收藏  举报