5
我正在嘗試爲OCA Java認證做好準備,並陷入了一些在if條件下處理賦值的問題。任何人都可以在下面的代碼中解釋不同行爲的原因嗎?根據我的觀點,我只是把同樣的兩個布爾值的「包容性或」條件的6倍......Tricky Java:如果條件中的布爾賦值
package pck;
class SuperMain{
boolean b;
public static void main(String args[]){
new SuperMain();
}
SuperMain(){
if(_true()|_false())
System.out.println(b); //1 - prints false
if(b=true|_false())
System.out.println(b); //2 - prints true
if(_true()|(b=false))
System.out.println(b); //3 - prints false
if((b=true)|_false())
System.out.println(b); //4 - prints false
if(b=true|(b=false))
System.out.println(b); //5 - prints true
if((b=true)|(b=false))
System.out.println(b); //6 - prints false
}
boolean _true(){return b=true;}
boolean _false(){return b=false;}
}
哪一個你不明白? – assylias
您編寫的測試自己的代碼,還是來自某個教程的代碼?它不僅在條件內分配,還使用按位或。我假設認證考試有意將此類內容扔在那裏,但如果我在評論中收到了這些代碼,我會將其發回。我們在現實世界中不這樣做(好吧,有些是,但不是我的團隊)。 – shoover
@shoover - 對於Java的布爾值,OR或OR邏輯是等價的,除了第二個表達式在某些情況下對於邏輯或不被評估。 (和優先;)) –