java - 为什么与 `==` 运算符相比,整数对象没有拆箱?

标签 java integer wrapper unboxing

因为有时它会让人感到困惑。 可以说:

Integer start=new Integer(10);
Integer mid=new Integer(10);
Integer end=new Integer(20);
System.out.println(start<end); // gives true
System.out.println(start!=end); // gives true
System.out.println(start==mid); // BAM! gives false

对象在前两行中被拆箱,但最后一行的工作方式相同,它比较引用。难道不应该把物体也拆箱吗?这只会让事情变得更简单(它会的,对吧?),还是我在这里遗漏了一些东西?

最佳答案

在 Java 1.4 中,没有拆箱,因此您可以编写

Integer x = new Integer (10);
Integer y = new Integer (10);
System.out.println(x == y); // false;
System.out.println(x != y); // true;

因此,当他们添加装箱和拆箱时,此代码必须以相同的方式工作,否则它们会破坏向后兼容性。

关于java - 为什么与 `==` 运算符相比,整数对象没有拆箱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25223907/

相关文章:

java - 如何将字符串值转换为整数数组列表 - Android

javascript - 在 javascript 中执行 "integer "转换/类型转换的惯用方式是什么?

html - 如何响应式地将图像排列在 div 内的一行中

html - 网站容器不会包装?

java - 对象如何与线程链接以便 wait() 和 notify() 工作

java - 了解 Java 中的每个循环

java - 将 OpenCV mat 转换为 Android 位图

java - 使用 Lambda Java 转换 List 类型

javascript - 使用 Javascript 来提醒用户输入的最高和最低整数

c++ - 隐藏返回给调用者的实例方法