集合框架-泛型、装箱拆箱

泛型:

是JDK1.5的新特性。在之前使用集合的时候,装入集合的各种类型的对象都被当做Object对待。失去了自己的类型,而从集合中取出对象的时候需要进行类型转换,效率低下且容易出错。

TreeMap<String, Integer> rm = new TreeMap<>();
//装入集合的元素必须是String和Integer类型的,不然编译器会报错的

装箱、拆箱:

也是JDK1.5的新特性之一。自动拆箱、装箱,其目的是为了方便基本数据类型和其对应的包装类型之前的转换。可以直接把一个基本数据类型的值赋给其包装类型(装箱),反之亦然(拆箱),中间过程由编译器自动完成。

编译器也只是对这个过程做了简单的处理,通过包装类的valueOf()方法对基本数据类型进行包装,通过包装类的类似intValue()方法得到其基本数据类型。

public static void main(String[] args) {
		Integer t1 = 45;					//会自动进行装箱,使用valueOf()方法
		Integer t2 = 45;
		System.out.println(t1==t2);			//true
		t1 = 323;
		t2 = 323;
		System.out.println(t1==t2);			//false
		System.out.println(t1.equals(t2));	//true
		
		/*
		 * 出现上面的结果,因为valueOf方法对部分经常使用的数据采用缓存技术,
		 * 也就是在未使用的使用,这些对象就创建并缓存着,需要的使用不需要新创建该对象,直接获取即可,提高性能。
		 * 例如:Byte,Integer和Long这些包装类都缓存了数值在-128~+127之间的对象,
		 * 自动装箱的时候,如果对象值在这个范围内,则直接返回缓存的对象,只有在没有的时候再去创建一个
		 * 所以,第一次为true,第二次为fasle
		 */
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值