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

xiaoxiao2021-02-28  20

首先我们做个试验

在基础类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的数保存在对象区,所以直接比较,相当于比较他们的地址,所以就是不相等的,但是比较他们的内容确实一样的。

如有错误请大家的指导。

转载请注明原文地址: https://www.6miu.com/read-449994.html

最新回复(0)