可变参数

可变参数 ----- 用来编写框架
原理:int... args 相当于 int[] args , 调用可变参数方法时,传入任意个数参数,任意个数参数都会被保存参数数组中
例如:add(int... args)
add(10,20) ----- > add(new int[]{10,20});
add(20,30,40) ----- > add(new int[]{20,30,40});
add() ------- add(new int[] {}); 


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


package cn.com.corotata;


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

import org.junit.Test;

public class VariableParameter {

	@Test
	public void test1(){
		int[] arr ={1,2,3};
		//使用Arrays.asList将数组转化为List
		List<int[]> list = Arrays.asList(arr);//转化时,会将int[]当成一个元素
		System.out.println("list1.size ="+list.size());//list1.size =1
		for (int[] is : list) {
			System.out.println("list1中的值为:"+is);//list1中的值为:[I@1c78e57
		}
		
		
		Integer[] arr2 ={1,2,3};//转化时,会将它当成一个数组进行传递
		List<Integer> list2 = Arrays.asList(arr2);
		System.out.println("list2.size ="+list2.size());//list2.size =3
		System.out.print("list2中的值为:");
		for (Integer integer : list2) {
			System.out.print("\t"+integer.toString()+"\t");//list2中的值为:1	2	3	
		}
		System.out.println();
		
		/*
		 * list3 是不是ArrayList?
		 * 该ArrayList不是我们平常的ArrayList,而是Arrays里面的一个static类,
		 * private static class ArrayList<E> extends AbstractList<E>
		 * 他的长度是不能改变的,即你不能调用他的add或者remove方法
		 */
		
		List<Integer> list3 = Arrays.asList(10,20,30);//Arrays.asList(10,20,30)相当于Array.asList(new Integer[]{10,20,30})
		System.out.println("list3.size ="+list3.size());//list3.size =3
		list3.add(100);//会报错
		list3.remove(30);//会报错
		
		
		/*
		 * Arrays.asList(arr2,10,20),返回<Serializable> List<Serializable> java.util.Arrays.asList(Serializable... a),
		 * 在这里arr2直接当成一个元素传入
		 */
		List list4 = Arrays.asList(arr2,10,20);
		System.out.println(list4.size());//3

	}
	
	@Test
	public void test2(){
		System.out.println("sum="+add(10,20));//30
		System.out.println("sum="+add(10,20,30));//60
		System.out.println("sum="+add());//0,传入一个长度为0的数组new int[0] 
		System.out.println("sum="+add(new int[]{10,20,30}));//60
	}
	
	public int add(int...num){
		int sum = 0;
		for (int i : num) {
			sum+=i;
		}//
		return sum;
	}
	
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值