【发布时间】:2015-02-16 16:47:11
【问题描述】:
我想知道if 子句中Boolean.TRUE 和true 值之间的区别。当我使用Boolean.TRUE 而不是true 时,为什么它会给我一个编译错误(可能尚未初始化一个值)。
下面是我的代码:
public class Test {
public void method1() {
int x;
if(Boolean.TRUE) {
x = 200;
}
System.out.println("x: " + x); // Compilation error
}
public void method2() {
int x;
if(true) {
x = 200;
}
System.out.println("x: " + x); // Compiles fine
}
}
【问题讨论】:
-
这毫无意义。检查 true 是否为 true 有什么意义?
-
@LawrenceAiello:你错过了问题的重点。在一种情况下,编译器可以正确识别表达式始终为真,在另一种情况下则不能。
-
它会抛出一个错误,但那是“值 x 可能尚未初始化”。那是因为在 Boolean.TRUE 后面也可以隐藏“false”。