拿一个|| (或)声明作为输入?

时间:2012-12-07 21:40:16

标签: java

我的这个类有一个foo方法和主要方法,我有一些变量和一个print语句。

public static boolean foo(int x, boolean b) {
    if (x < 0) {
          return true;
    }
    return !b; 
}

说我打印以下内容:

foo (-3, c || !c)

我无法理解||是什么应该做的。我在main中声明了boolean c = false,但我看不出它如何选择输入c(false)或!c(true)。另外,侧面问题:布尔变量前面的惊叹号会给出相反的权利吗?即如果输入为假,并且foo返回!b,它将返回true?

5 个答案:

答案 0 :(得分:3)

这可以说是一种同义反复,总是如此。

c || !c表示:“c OR 不是c”。其中一个总是如此。

答案 1 :(得分:1)

  

我看不出它如何选择输入c(假)或!c(真)

不是“选择输入”两种不同的可能性。它传递,这是评估 c || !c结果,是一个布尔值。

注意:对于x || !x的任何布尔值,true将始终评估为x

答案 2 :(得分:1)

c || !c始终为true - 您也可以用

替换代码
foo (-3, true)

答案 3 :(得分:1)

如果您将c声明为:

 boolean c = false;// or true

然后c || !c将始终生成true

因此,方法调用foo (-3, c || !c) 只能等同于foo (-3, true)

答案 4 :(得分:1)

“||”意味着OR,所以任何x || !x将始终返回true,无论您将x声明为false还是true。