我有一个Java项目和Eclipse工作(版本3.6.2)为IDE,一个枚举的比较,我得到一个奇怪的现象,继古怪的例子:的Java比较枚举(奇怪的行为)
全局变量:
StatusType status = StatusType.SIGNATURE;
代码:
String trsStatus = "END";
if(trsStatus.equals("END") && (this.status.compareTo(StatusType.SIGNATURE) != 0)){
//Do something
}
这种比较成功,然后在if块,为什么呢?在这种情况下,if语句的第二次评估(this.status.compareTo(StatusType.SIGNATURE)!= 0)失败,因为结果为false!为什么java在块中输入?
如果我在Eclipse调试器的表达观察者评估表达的语句的值是:
trsStatus.equals( “END”)--->真
(this.status .compareTo(StatusType.SIGNATURE)= 0)--->假
我已经做了另一个测试,如果我在如果分配所述第二表达式的结果语句一个布尔变量:
boolean sign = (this.status.compareTo(StatusType.SIGNATURE) != 0);
我得到这样的结果:
(!this.status.compareTo(StatusType.SIGNATURE)= 0)--->假
标志--->真
为什么?!?
这怎么可能?
你确定你正在进入'if'块吗?你也可以定义一个'boolean'作为整个表达式,包括'&&',并检查它是否为false。 – toto2 2011-06-15 15:17:03
是的,在if块中输入,令人难以置信......我也试着定义一个包含两个表达式的布尔变量,但问题依然存在。 – aleroot 2011-06-15 15:19:59
那个var的价值是什么?假? – toto2 2011-06-15 15:23:47