为什么在Integer中128不等于128?

首先我们做个试验

在基础类int的对象类中创建两对象

public static void main(String[] args) {

Integer a = 128;

Integer b = 128;

boolean c = (a == b);


System.out.println(c);


}

最后输出的结果实false。

public static void main(String[] args) {

Integer a = 128;

Integer b = 128;

boolean c = (a.equals(b));


System.out.println(c);


}

而用equals比较的时候输出的是true;


public static void main(String[] args) {

Integer a = 127;

Integer b = 127;

boolean c = (a == b);


System.out.println(c);


}

而127和127比较的时候输出的true。

这是因为int基础类最大只能为127,在它的对象类中-128到127的数保存在静态区,而大于127的数保存在对象区,所以直接比较,相当于比较他们的地址,所以就是不相等的,但是比较他们的内容确实一样的。


如有错误请大家的指导。



版权声明:本文为w12111w原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。