java - 比较两个整数 : why is == true?

标签 java integer

<分区>

Possible Duplicate:
Wrapper class and == operator

您好,当我将整数与 == 进行比较时,我遇到了一些问题,所以 你能解释一下为什么第二次测试也成功了吗?

@Test
public void integerTest() {
    Integer prvni = 127;
    Integer druhy = 127;
    Integer treti = 128;
    Integer ctvrty = 128;

    assertTrue(prvni == druhy);
    assertTrue(treti != ctvrty);

}

最佳答案

当使用 == 比较对象时,您实际上是在比较引用。即,两个断言都为真的原因是因为 prvnidruhy 指的是同一个对象tretictvrty 没有。

这是因为 JVM 缓存 Integer 范围内的对象 -128 到 127,并在自动装箱值时重用缓存的对象。

除非您改用 int,否则您可以通过 prvni.intValue()或使用 prvni.equals(...) 代替。

关于java - 比较两个整数 : why is == true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7309640/

相关文章:

java - 如何将Byte数组转换为整数,然后转换为字符串,以显示整数值?

java - BeforeAll 方法中没有为参数注册 ParameterResolver

java - 在 Travis CI 中运行 jar

javascript - 将 boolean 结果转换为数字/整数

java - 根据列对二维 int 数组进行排序的过程

java - 0 和 0. 在 Java 中有什么区别?

java - BufferedReader read() 方法始终为 true

java - 如何设置java显示异常的完整调用堆栈?

java - 不幸的是 HelloAndroid 应用程序已停止

c++ - 从文件中读取 64 位整数字符串