2017-10-15 55 views
0

設置布爾變量的條件?

boolean foo= bar>1; 

boolean foo = bar>1? true:false; 

我已經注意到,在第一個例子,病情立即評估,尋找這樣的事情之間的顯着差異。

int bar=3; 
boolean foo= bar>1; 
bar =0; 
if(foo){ 
    System.out.println("Foobar"); 
} 

將打印Foobar,而如果條件均是if語句中,它不會在所有打印。這到目前爲止是相同的給布爾變量從開始的真/假值與三元運算符或if/else

回答

3

三元是高度冗餘的。鑑於不等式將返回布爾結果,您無需對其執行任何類型的三元操作。

+0

這就是我的想法,因爲我知道它不評估if語句中的變量,我只是確保沒有任何額外的細微差別。 – Ben

1

有一件事我喜歡一起添加,兩者的代碼將產生相同的字節碼。爲了證明可以使用Java類文件反彙編(javap

使用命令來拆機class文件javap -c com.package.MyClass,你會發現兩者的代碼JVM會產生相同的字節碼。因此有兩種說法中的任何一種都有益處或傷害沒有。但絕對是這裏三元組是redaundant