我有一個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