Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查布尔条件,哪种方法更好_Java - Fatal编程技术网

Java 检查布尔条件,哪种方法更好

Java 检查布尔条件,哪种方法更好,java,Java,哪种方法检查布尔值更好?为什么? 我有一个代码,其中当前面的方法返回true时调用一个方法。 我想出了不同的方法来实现这一点,哪一个更好?请提供答案的原因 boolean check1=methodA(); boolean check2=methodB(); boolean check3=methodC(); 这样更好吗 if(check1==check2==check3==true){ method4(); } 还是这个 if(check1 && check2 &a

哪种方法检查布尔值更好?为什么? 我有一个代码,其中当前面的方法返回true时调用一个方法。 我想出了不同的方法来实现这一点,哪一个更好?请提供答案的原因

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
这正是XNOR的真值表,也就是逻辑等式,这并不奇怪


从技术上讲,根据“[
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
这正是XNOR的真值表,也就是逻辑等式,这并不奇怪


从技术上讲,根据“[
true
]如果前面的方法返回true作为值”,这是正确的,如果所有检查都为true,则为true,在其他一些情况下也为true,并且“if”没有说明这一点,因为它是单向含义。但很可能你指的是iff(如果且仅当),然后它就错了。

我会选择方法2,因为它更容易阅读第一种方法并不意味着你认为它意味着什么你的第一种选择令人困惑。。。false==false==true==true将进入if条件,它不是您想要的。我会选择方法2,因为它更容易阅读第一个方法并不意味着您认为它意味着什么您的第一个选项令人困惑。。。false==false==true==true将进入if条件,并且它不是您想要的。