可能重复:
包装类和==运算符
嗨,当我比较整数与==我有一些问题所以你能解释我为什么第二次测试也成功吗?
@Test
public void integerTest() {
Integer prvni = 127;
Integer druhy = 127;
Integer treti = 128;
Integer ctvrty = 128;
assertTrue(prvni == druhy);
assertTrue(treti != ctvrty);
}
Run Code Online (Sandbox Code Playgroud)
aio*_*obe 11
当==用于比较对象时,您实际上是在比较引用.也就是说,这两个原因都断言真正是因为prvni和druhy 指向同一个对象,而treti并ctvrty没有.
这是因为JVM 缓存 Integer -128到127范围内的对象,并在自动装箱值时重用缓存对象.
除非你切换到int,否则你可以通过prvni.intValue()或prvni.equals(...)改为使用.
| 归档时间: |
|
| 查看次数: |
3757 次 |
| 最近记录: |