什么是问号“?”和冒号“:”运算符用于? [重复]

问题

这个问题在这里已有答案:

  • 什么是Java?:运算符被调用,它做了什么? 14个答案

关于使用问号的两个问题"?"和打印函数括号内的冒号":"运算符:它们做了什么?此外,是否有人知道他们的标准术语或我可以在哪里找到有关其使用的更多信息?我读过它们与'if''else'语句类似。

int row = 10;
int column;
while (row >= 1)
{
    column = 1;
    while(column <= 10)
    {
        System.out.print(row % 2 == 1 ? "<" : "\r>");
        ++column;
    }
    --row;
    System.out.println();
}

#1 热门回答(249 赞)

这是ternary conditional operator,可以在任何地方使用,而不仅仅是print语句。它有时被称为"三元运算符",但是it's not the only ternary operator,这是最常见的运算符。

以下是维基百科展示其工作原理的一个很好的例子:

编写了C,Java和JavaScript中的传统if-else结构:if(a> b){
    result = x;
} else {
    result = y;
}
 这可以改写为以下语句:result = a> b? x:y;

基本上它采取以下形式:

boolean statement ? true result : false result;

因此,如果布尔语句为真,则获得第一部分,如果为假,则获得第二部分。

尝试这些,如果仍然没有意义:

System.out.println(true ? "true!" : "false.");
System.out.println(false ? "true!" : "false.");

#2 热门回答(7 赞)

这是一个if / else语句等于

if(row % 2 == 1){
  System.out.print("<");
}else{
  System.out.print("\r>");
}

#3 热门回答(3 赞)

a=1;
b=2;

x=3;
y=4;

answer = a > b ? x : y;

answer=4因为条件是假的,它需要y值。

问号(?)
。条件为真时使用的值

冒号(:)
。条件为false时使用的值