15

我遇到了这种语法:

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

11 回答 11

55

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

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

评估第一个操作数,然后根据第一个操作数是真还是假来评估第二个第三个操作数......最终作为运算符的结果。

所以是这样的:

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

大致相当于:

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

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

String text = getSomeStringReferenceWhichMightBeNull();
int usefulCharacters = text == null ? 0 : text.length();
于 2013-07-04T12:45:07.143 回答
20

它是条件运算符,通常称为三元运算符,因为它有 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 语言规范第 15.25 章条件运算符中的详细信息?

于 2013-07-04T12:45:50.647 回答
4

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

于 2013-07-04T12:44:05.483 回答
2

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

于 2013-07-04T12:43:51.480 回答
2

对于您的问题:

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

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

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

于 2013-07-04T12:46:00.020 回答
2

那是一个if语句。

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

于 2013-07-04T12:43:42.620 回答
1

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

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

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

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

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

于 2013-07-04T12:44:44.207 回答
1

它的三元运算符。

三元运算符或 ? 是 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";
}
于 2013-07-04T12:47:49.217 回答
1

它是 if-else 语句的一种简短形式。

它以这种方式工作

(yourCondition ? STATEMENT1 : STATEMENT2)
  • 编译器检查条件。
  • IF它返回TRUE然后STATEMENT1将被执行。
  • ELSE STATEMENT2将被执行。
于 2013-07-04T12:57:47.730 回答
0

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

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

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

于 2013-07-04T12:44:50.703 回答
0

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

于 2013-07-04T12:45:13.403 回答