关于java装箱和拆箱
转载http://www.cnblogs.com/dolphin0520/p/3780005.html
Integer a = 100 ==> Integer a = Integer.valueof(100)
int n = a ==> n = Integer.intvalue(a) 变为数值
Java 基本类型的包装类的大部分都实现了常量池技术,即 Byte,Short,Integer,Long,Character,Boolean;前面 4 种包装类默认创建了数值[-128,127] 的相应类型的缓存数据,Character创建了数值在[0,127]范围的缓存数据,Boolean 直接返回True Or False。如果超出对应范围仍然会去创建新的对象。
Integer i1 = 100; Integer i2 = 100; System.out.println(i1==i2); true
Integer i3 = 100; Integer i4 = 100; System.out.println(i3==i4); false 因为超出常量池,创建new Integer(i)
Float,Double 并没有实现常量池技术 他们的比较都是false
当 "=="运算符的两个操作数都是 包装器类型的引用,则是比较指向的是否是同一个对象,而如果其中有一个操作数是表达式(即包含算术运算)则比较的是数值(即会触发自动拆箱的过程)
本文介绍了Java装箱和拆箱的转换方式,如Integer a = 100 会转换为 Integer a = Integer.valueof(100) 。还提到Java基本类型包装类大多实现常量池技术,Byte、Short等有对应范围缓存数据,Float、Double未实现。同时说明了“==”运算符在不同操作数情况下的比较规则。
2491

被折叠的 条评论
为什么被折叠?



