【发布时间】:2014-09-17 12:43:40
【问题描述】:
这是经典的,但写信给 Google 并没有给我成功。
我的代码:
Integer i = ..; // Sth is put from database.
if (i != 1) {
// do sth
} else {
// do not.
}
案例:
我知道这个比较是不正确的java,我应该比较:
if (i.intValue != 1) {}
或
if(!i.equals(1)) {}
但是我的代码有第一个,我似乎从某个地方得到了正确的结果,Integer 不是 1,当它是 1 时出现错误。
问题:
周围发生了什么?
【问题讨论】:
-
一句话,自动装箱...
Integer会在需要的时候自动转换成int。 -
整数被自动拆箱
-
但是请注意,在执行
reference comparison的某些情况下,自动拆箱不会发挥作用。有关更多信息,请参阅此问题:Comparing Integer Values in Java, Strange Behavior
标签: java