首先我们做个试验
在基础类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版权协议,转载请附上原文出处链接和本声明。