自动装箱

API开发人员认为:对于所有的包装器类,如果两个对象具有相同的类型和相同的值,则他们就是相等的。对于下面代码:
  Integer i1=1000;
  Integer i2=1000;
  if(i1!=i2) System.out.println("different objects" );
  if(i1.equals(i2)) System.out.println("meaningfully equal" );
产生如下输出:
   different objects
   meaningfully equal
这个结果或许大家不感到惊讶,在看看如下代码:
  Integer i3=10;
  Integer i4=10;
  if(i3=i4) System.out.println("same object" );
  if(i3.equals(i4)) System.out.println("meaningfully equal" );
它将产生如下输出:
  same object
  meaningfully equal
为什么呢?这就是装箱的创建。装箱是jdk1.5以后引入的新特性,为了节省内存,对于下列包装器对象的两个实例(通过装箱创建),当他们的基本值相同时,他们总是==关系:
(1)Boolean
(2)Byte
(3)从\u0000到\u007f的字符(7f是十进制的127)
(4)-128到127的Short和Integer。
也就是说,符合上面四个条件时,两个值装箱时都是==的。




你可能感兴趣的:(自动)