java - 在 Java 中比较整数

标签 java

我从一本没有解释结果的 Java 书中得到以下代码。我运行了它并得到了下面内联的结果,但我需要帮助来理解结果:

1. Integer i = -10;
2. Integer j = -10;
3. System.out.print(i==j);  //  ==> true
4. System.out.print(i.equals(j));   //  ==> true
5. Integer n = 128;
6. Integer m = 128;
7. System.out.print(n==m);  //  ==> false
8. System.out.print(n.equals(m));   //  ==> true

我的问题是:

  • 为什么第 3 行解析为 true?它们不是两个独立的对象吗?
  • 如果第 3 行为真,为什么第 7 行不为真?

如果提前谢谢。

最佳答案

参见 Integer.valueOf(int i) 源代码。

它缓存(使用整数池)-128 到 127 之间的整数(这些是默认值,可以通过 java.lang.Integer.IntegerCache.high 自定义)

关于java - 在 Java 中比较整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13672686/

相关文章:

java - 如果 @Configuration 类包含不可解析的类引用,Spring 如何调用 @Bean 方法

java - 在 Java 中有效地将长字符串转换为长字符串

java - Android 判断是否有来自常用联系人的来电

java - 是否可以在项目中更改 Java 语法?

java - iText7:如何获取段落的实际宽度

用于绘制 map 的 Java 库?

java - 如何在hibernate中写left join?

java - Spring MVC : Spring Security 4 doesn't intercept

java - FindBugs - 与 null 的冗余比较

java - 使用 UriBuilder 的 HATEOAS 链接