Java原始 - 对象比较:原始自动装箱还是未装箱的对象?

时间:2015-12-10 23:26:23

标签: java autoboxing unboxing

根据Java tutorial关于自动装箱(和拆箱)

  

将原始值(例如int)转换为对象   相应的包装类(Integer)称为autoboxing。该   当原始值为:

时,Java编译器应用自动装箱      
      
  • 作为参数传递给期望对象的方法   相应的包装类。
  •   
  • 分配给的变量   相应的包装类。
  •   
     

将包装类型(Integer)的对象转换为其对应的   primitive(int)值称为unboxing。 Java编译器适用   当包装类的对象是:

时取消装箱      
      
  • 作为参数传递给期望相应基元类型值的方法。
  •   
  • 分配给相应基元类型的变量。
  •   

该教程进一步阐述了%+=等运营商使用intValue在运行时将Integer转换为int

在原语和包装类上进行==><等比较时会发生什么?

例如,如果5 == Integer.valueOf(5) 5已自动装箱并评估为Integer.valueOf == Integer.valueOf(5)Integer.valueOf(5)已取消装箱并评估为5 == 5

在此示例中,功能结果是等效的,因为Integer s -128127被缓存,但是对于更大的数字呢?

在较大数字上运行此算法的经验测试表明Integer对象未拆箱且比较使用原始值。是否有专门定义此行为的官方文档?

0 个答案:

没有答案