自动装箱/卸箱

自动装箱——autoboxing,在JDK1.5中首次发表,指将一个基本类型变量,如:
  int x=5;
  直接、自动地装入代表它的包装类,如Integer对象中,而不必经过传统的方法调用,即:
  Integer myInt=x;//自动装箱成为整数型包装类对象
  自动装箱并不是什么魔术箱。实际上,编译器将自动调用这个包装类的构造器,如:
  Integer myInt=new Integer(x);
  实现所谓的装箱操作。

自动装箱体现了封装性。其目的也是为了是一个基本类型变量自动向上转型为对象。

自动卸箱——autounboxing,与自动装箱相对应,如:
  int n = myInt;//myInt为一个整数型包装类对象,自动转换为其基本类型数据
  实际上,编译器将自动调用Integer的intValue()方法,如:
  int n = myInt.intValue();
  将该包装类对象myInt的数值赋予整数型变量n。

引用还是创建?详细出处参考http://blog.csdn.net/ft305977550/article/details/8363959

  在java中为了节省创建对象的时间和空间,对于一些常用的对象,会将它在内存中缓存起来。就像String一样。 直接使用String s = "str" 这种形式来产生String对象的话,如果内存中有一个也是这种方式产生的String对象的话,那么就不会新建对象,
而是直接使用之前建立的那个String对象。实际上,对于如下的范围内的简单数据类型:
    1.boolean类型的值;
  2.所有的byte的值;
  3.在-128~127的short类型的值;
  4.在-128~127的int类型的值;
  5.Unicode在\ u0000~\ u00ff 之间的char类型的值。
  都会先在内存中区查找。即对于布尔型及在-128~127的数值类型和字符类型实行对象引用,其他执行对象创建。例:

复制代码
public class AutoBoxing {
    public static void main(String[] args){
        Integer n1=127;
        Integer n2=127;
        Integer n3=128;
        Integer n4=128;
        System.out.println(n1==n2);//true
        System.out.println(n3==n4);//false
    }
}
复制代码

PS. 自动装箱与自动卸箱一样,并没有给编译器和JVM带来任何简化操作,相反却增加了编译器进行编译的中间环节。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值