Я работаю с проектом Java и Eclipse (версия 3.6.2) в качестве IDE, при сравнении перечислений я получаю странное поведение, следуя примеру странности:
Глобальная переменная:
StatusType status = StatusType.SIGNATURE;
Код:
String trsStatus = "END";
if(trsStatus.equals("END") && (this.status.compareTo(StatusType.SIGNATURE) != 0)){
//Do something
}
Это сравнение успешно и введите в блок if, Почему?В этом случае вторая оценка (this.status.compareTo (StatusType.SIGNATURE)! = 0) операторов if не удалась, поскольку результат ложен!Почему java, однако, входит в блок ???
Если я вычисляю выражение в наблюдателе выражений отладчика eclipse, значения операторов:
trsStatus.equals ("END") ---> true
(this.status.compareTo (StatusType.SIGNATURE)! = 0) ---> false
Я провел еще один тест, еслия присваиваю результат второго выражения в операторах if логической переменной:
boolean sign = (this.status.compareTo(StatusType.SIGNATURE) != 0);
я получаю такой результат:
(this.status.compareTo (StatusType.SIGNATURE))! = 0) ---> false
sign ---> true
Почему?!?
Как это возможно?