2017-10-15 86 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