Java 检查布尔条件,哪种方法更好
哪种方法检查布尔值更好?为什么? 我有一个代码,其中当前面的方法返回true时调用一个方法。 我想出了不同的方法来实现这一点,哪一个更好?请提供答案的原因Java 检查布尔条件,哪种方法更好,java,Java,哪种方法检查布尔值更好?为什么? 我有一个代码,其中当前面的方法返回true时调用一个方法。 我想出了不同的方法来实现这一点,哪一个更好?请提供答案的原因 boolean check1=methodA(); boolean check2=methodB(); boolean check3=methodC(); 这样更好吗 if(check1==check2==check3==true){ method4(); } 还是这个 if(check1 && check2 &a
boolean check1=methodA();
boolean check2=methodB();
boolean check3=methodC();
这样更好吗
if(check1==check2==check3==true){
method4();
}
还是这个
if(check1 && check2 && check3){
method4();
}
有不同的含义
if(check1==check2==check3==true){
method4();
}
true==false==true
是true
当true&&false&&false
明显是false
时。为什么?当我们有相同优先级的运算符时,我们从左向右
check1==check2==check3==true
实际上是:
(((check1==check2)==check3)==true)
(((true==false)==false)==true)
(( false ==false)==true)
( true ==true)
true
有不同的含义
if(check1==check2==check3==true){
method4();
}
true==false==true
是true
当true&&false&&false
明显是false
时。为什么?当我们有相同优先级的运算符时,我们从左向右
check1==check2==check3==true
实际上是:
(((check1==check2)==check3)==true)
(((true==false)==false)==true)
(( false ==false)==true)
( true ==true)
true
第一种变体是错误的。它没有给出
check1=true
、check2=false
和check3=false
的预期结果第一个变量是错误的。它没有给出check1=true
、check2=false
和check3=false
对于完整性,有四种方法可以满足第一个条件(已经提到了一些,但为了便于概述,我将收集它们)
按外观顺序,check1、check2、check3
(因为false,false,true
是false==false
)true
(因为false,true,false
是false==true
)false
(因为true,false,false
是true==false
)false
(因为true,true,true
是true==true
)true
从技术上讲,根据“[
true
]如果前面的方法返回true作为值”,这是正确的,如果所有检查都为true,则为true,在其他一些情况下也为true,并且“if”没有说明这一点,因为它是单向含义。但很可能你指的是iff(如果且仅当),那么它就错了。为了完整性,有四种方法可以满足第一个条件(其中一些已经提到,但为了便于概述,我将收集它们)
按外观顺序,check1、check2、check3
(因为false,false,true
是false==false
)true
(因为false,true,false
是false==true
)false
(因为true,false,false
是true==false
)false
(因为true,true,true
是true==true
)true
从技术上讲,根据“[
true
]如果前面的方法返回true作为值”,这是正确的,如果所有检查都为true,则为true,在其他一些情况下也为true,并且“if”没有说明这一点,因为它是单向含义。但很可能你指的是iff(如果且仅当),然后它就错了。我会选择方法2,因为它更容易阅读第一种方法并不意味着你认为它意味着什么你的第一种选择令人困惑。。。false==false==true==true将进入if条件,它不是您想要的。我会选择方法2,因为它更容易阅读第一个方法并不意味着您认为它意味着什么您的第一个选项令人困惑。。。false==false==true==true将进入if条件,并且它不是您想要的。