Java中包装类的一些注意点


  •  java中8种基本类型变量对应的包装类:

byte -- Byte

short -- Short          

int  --  Integer

long -- Long

float -- Float

Double -- Double

boolean -- Boolean

char -- Character   

 

  • 包装类型的自动拆箱与自动装箱实现原理

          从JDK1.5之后java引入了自动装箱与自动拆箱技术。

          一般我们产生一个对象都是通过new的形式,而包装类型的自动装箱则是这样:

Long t1 = 1000L;

 

         不必感到诧异,其实底层在编译阶段就把上述代码改成:

Long t1 = Long.valueOf(1000L);

   ---------------------------------------------------------------------------------------------------

         拆箱机制:

long t2 = t1;

 

伦理片 http://www.dotdy.com/

 拆箱底层编译期实现:

long t2 = t1.longValue();

 

       以上就是包装类型的拆箱以及装箱的原理。

 

 

  • 包装类型缓存区的使用

对于Byte、Short、Integer、Long、Character这几种包装类型,当自动装箱的数值在[-128, 127]之间时,不会去创建对象而是从各自对应的缓存区中返回对象,例如:

Java代码   收藏代码
  1. Long t1 = 128L;     
  2. Long t2 = 128L;  
  3. System.out.println(t1 == t2);  //false,t1、t2均由new产生新的对象。  
  4.   
  5. Long t3 = 127L;  
  6. Long t4 = 127L;   
  7. System.out.println(t3 == t4);  //true,里当然返回true了。  

 

 实现原理:因为自动装箱会使用各自包装类的valueOf(),这里只给出Long包装类型底层实现。

Java代码   收藏代码
  1. public static Long valueOf(long l) {  
  2.     final int offset = 128;  
  3.     if (l >= -128 && l <= 127) { // will cache  
  4.         return LongCache.cache[(int)l + offset];  
  5.     }  
  6.     return new Long(l);  

 影音先锋电影 http://www.iskdy.com/

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值