public static void main(String[] args)
{
Integer z=8;//Integer z=8与int z=8有什么区别?
z=z*5;
sop("z="+z);
Integer m=128;
Integer n=128;
sop("m==n:"+(m==n));
//打印结果:false m和n数值相同,为什么比较结果为false?
//JDK1.5版本以后出现的新特性,当数值在byte范围内(-128到127)时,对于新特性,如果该数值已经存在,则不会再开辟新的空间,而且128超过了其范围所以每个引用对象都自己创建了一个引用地址所以比较会出现上面的结果
//解决方法1 用对象比较方法equals
sop("m==n 1:"+(m.equals(n)));
//解决方法2 用这两个对象的具体值比较
sop("m==n 2:"+(m.intValue()==n.intValue()));
Integer a=127;
Integer b=127;
sop("a==b:"+(a==b));//结果:true 这里a和b比较结果为什么又为true呢?
} |