【问题标题】:Java: boolean in println (boolean ? "print true":"print false") [duplicate]Java:println中的布尔值(布尔值?“打印真”:“打印假”)[重复]
【发布时间】:2025-12-25 07:45:11
【问题描述】:

我遇到了这种语法:

System.out.println(boolean_variable ? "print true": "print false");
  • 这个带有两个点的语法是什么:调用?
  • 在哪里可以找到有关它的信息?
  • 它仅适用于布尔值还是以其他不同的方式实现?

【问题讨论】:

  • 它通常被称为“三元运算/运算符”,三元= 3。它是一个 if-then-else 表达式,可以链接:x > 0.01 ? "positive" : x < -0.01 ? "negative" : "zero"。键入:boolean ? A : B,结果可能是 A 和 B 类。conditon ? null : "" 的类型是字符串。

标签: java boolean


【解决方案1】:

? :conditional operator。 (不仅仅是: 部分 - 整个方法参数是您示例中条件运算符的一种用法。)

它通常被称为三元运算符,但这只是其性质的一个方面 - 具有三个操作数 - 而不是它的名称。如果在 Java 中引入了另一个三元运算符,则该术语将变得模棱两可。之所以称为条件运算符,是因为它有一个 条件(第一个操作数),它决定了对其他两个操作数中的哪一个进行求值。

计算第一个操作数,然后根据第一个操作数是真还是假来计算任何一个第二个第三个​​操作数......然后结束up 作为运算符的结果。

所以是这样的:

int x = condition() ? result1() : result2();

大致相当于:

int x;
if (condition()) {
    x = result1();
} else {
    x = result2();
}  

重要的是它评估另一个操作数。例如,这很好:

String text = getSomeStringReferenceWhichMightBeNull();
int usefulCharacters = text == null ? 0 : text.length();

【讨论】:

  • 一直认为它被称为三元运算符。谢谢。如果你向下滚动链接,它也被称为The ternary conditional operator ? :
  • @rajesh:是的,就像“二元 + 运算符”和“一元 + 运算符”一样 :)
  • '大致相当于:'为什么只是大致?你能说出区别吗?
  • @Roland:对于那个精确的例子,我现在不能——尽管这并不意味着没有我没有想到的情况。如果x的类型是Integer而不是intresult1()返回Integerresult2()返回int,那么会有一个非常显着的区别:条件表达式的推断类型将是int 而不是Integer,因此result1() 的结果将被拆箱然后重新装箱,如果它返回null,这可能会导致NullPointerException。正是这种排序的微妙之处让我写了“大致等价”来对冲我的赌注。
【解决方案2】:

它是条件运算符,通常称为三元运算符,因为它有 3 个操作数:例如:

int foo = 10;
int bar = foo > 5 ? 1 : 2; // will be 1
int baz = foo > 15 ? 3 : 4; // will be 4

因此,如果boolean 表达式的计算结果为true,它将返回第一个值(在冒号之前),否则返回第二个值(在冒号之后)。

您可以阅读Java Language Specification, Chapter 15.25 Conditional Operator ?中的详细信息

【讨论】:

  • 另外需要注意的是:未使用的表达式不会被计算。当 x 为空时,表达式x != null ? x.Method() : 0 不会触发空引用异常。与与三元运算符执行相同操作的函数相比,这是一个重要的优势,因为传递给函数的所有参数总是被计算。
【解决方案3】:

它是一个三元运算符,这意味着它不像许多其他运算符那样有两个操作数,而是有三个。 Wikipedia on Ternary Operation 以及它在 Java 中的使用方式。它归结为:评估布尔运算(或只是一个变量)。如果计算结果为真,则运算符返回值 / 执行: 之前的代码,否则执行它之后的代码。

【讨论】:

    【解决方案4】:

    这是一个 if 语句。

    左边是什么?是条件,两者之间是什么?和 : 是条件为真时的结果, : 右边是条件为假时的结果。

    【讨论】:

      【解决方案5】:

      这是ternary operator (http://en.wikipedia.org/wiki/?:)。当您需要一个小的if 表达式时,它可以在任何地方使用。

      【讨论】:

      • 你指的那篇文章提到 ?: 被称为条件运算符,而不是三元运算符
      【解决方案6】:

      对于您的问题:

      1. ?:(两个字符一起)称为条件运算符(或三元运算符)。只有两者一起工作。
      2. 搜索 java 三元运算符
      3. 它只适用于布尔值

      原则上三元运算符是缩短的if/elseboolean 将是 if 的条件,?: 之间的部分是 if 分支,而这之后的部分是 else 分支。

      请注意,条件运算符的返回类型由第一个分支决定

      【讨论】:

        【解决方案7】:

        它是三元运算符,它适用于布尔值。在某些情况下,它可以用作 if-else 的简写,但不应该用于太复杂的事情,因为它可能难以阅读。

        一个例子是根据条件为变量赋值:

        String message = doOperation() ? "Success" : "Error occurred";
        System.out.println(message);
        

        在这种情况下,如果 doOperation 返回一个布尔值来表明它是否成功,则要显示的消息可以在一行上分配。

        请注意,此示例并不代表良好的编程习惯。

        【讨论】:

          【解决方案8】:

          它的三元运算符。

          三元运算符或 ? 是 if else 语句的简写。它可用于计算表达式并根据表达式的结果返回两个操作数之一。

          boolean b = true;
          String s = ( b == true ? "True" : "False" );
          

          这将根据布尔值b的值设置String s的值。这可以使用这样的 if else 语句来编写:

          boolean b = true;
          String s;
          if(b == true){
              s = "True";
          }else{
              s = "False";
          }
          

          【讨论】:

            【解决方案9】:

            它是 if-else 语句的缩写形式。

            以这种方式工作

            (yourCondition ? STATEMENT1 : STATEMENT2)
            
            • 编译器检查条件。
            • IF 它返回TRUE 然后STATEMENT1 将被执行。
            • ELSE STATEMENT2 将被执行。

            【讨论】:

              【解决方案10】:

              后跟冒号(两个点)的问号是三元运算符,通常称为 inline if。

              在这种情况下,它会根据 boolean_variable 的值返回一个字符串。

              http://en.wikipedia.org/wiki/%3F:

              【讨论】:

                【解决方案11】:

                here。三元运算符类似于 if 表达式,但不同之处在于它是一个表达式——它有一个返回值,而 if 表达式没有。有时你想用它来让你的代码不那么混乱。

                【讨论】: