分别写出以下三段代码的执行结果:
代码片段1
积分积分1=100; 积分积分2=100; system.out.println (integer1==integer 2; 复制代码片段2
Integer integer3=1000; 积分积分4=1000; system.out.println (integer3==integer 4; 复制代码片段3
积分积分5=new积分(100; 积分积分6=new积分(100; system.out.println (integer5==integer 6; 代码运行结果:
代码片段1:true代码片段2:false代码片段3:false复制代码为代码片段1,100表示在byte取值的范围内,在创建Integer1时进行新的integer操作根据integer2的值,integer1和integer2是同一对象。
在代码片段2中,integer3和integer4是两个不同的对象,因为1000不在byte取值的范围内,而是在每次赋值时重新创建对象。
代码片段3使用关键字new,因此无论数值是否在byte的值范围内,都会为每个new在堆内存中创建一个对象。 因此,integer5和integer6是两个不同的对象。
注:通常,int hashCode=object.hashCode (; 因为返回的是对象的存储器地址,但可能会重写hashCode ()。 因此,方法int hashcode=system.identity hashcode (object ); 获取对象的存储器地址。
Integer创建对象的流程
转载于:https://juejin.im/post/5c e26 c 646 fb9a 07 f 04201 af 7