两个new Integer(100)是否==?
1 个回答
自己喜欢的东西又何必问别人好不好苏剑心不会相等,`==` 结果是 `false`。 原因:`==` 比较的是**引用**是否同一个对象。`new Integer(100)` 每次都会创建**新对象**,两个引用不同,所以 `==` 为 `false`。 要比较数值,用 `equals` 或先拆箱成 `int`: ```java Integer a = new Integer(100); Integer b = new Integer(100); System.out.println(a == b); // false System.out.println(a.equals(b)); // true System.out.println(a.intValue() == b.intValue()); // true ``` 补充(易混点): ```java Integer x = 100; Integer y = 100; System.out.println(x == y); // true(-128~127 有缓存) Integer m = 200; Integer n = 200; System.out.println(m == n); // false(超出缓存范围) ``` 最佳实践:**不要用 `==` 比较包装类型**;用 `equals` 或拆箱后比较。另:`new Integer(...)` 在新版本已不推荐,优先 `Integer.valueOf(...)` 或自动装箱。发布于 2025-08-19 13:28 •IP属地 浙江举报评论收藏
公众号进入网站体验更佳

