这个问题已经在这里有一个答案:
- 什么是Java?所谓的运营商,它有什么作用? 15个回答
有关使用问号两个问题“?” 和冒号“:”打印功能的括号内的运营商:他们做什么工作? 此外,没有人知道他们的标准条款或在哪里可以找到他们使用的更多信息? 我读过,它们类似于一个'如果“别人”的语句。
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();
}
这是三元条件运算符 ,它可以在任何地方使用,而不只是打印语句。 它有时只是被称为“三元运算符”,但它不是唯一的三元运算符 ,只是最常见的一种。
下面是维基百科展示它是如何工作的一个很好的例子:
传统的if-else结构在C,Java和JavaScript写的是:
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.");
那是一个if / else语句equilavent到
if(row % 2 == 1){
System.out.print("<");
}else{
System.out.print("\r>");
}
a=1;
b=2;
x=3;
y=4;
answer = a > b ? x : y;
answer=4
,因为条件为假花费y值。
问号(?)
。 如果条件为真时使用的值
冒号(:)
。 如果条件为假时使用的值
也许它可以是Android的很好的例子, 例如:
void setWaitScreen(boolean set) {
findViewById(R.id.screen_main).setVisibility(
set ? View.GONE : View.VISIBLE);
findViewById(R.id.screen_wait).setVisibility(
set ? View.VISIBLE : View.GONE);
}
它是一个三元运算符和在简单的英文它指出"if row%2 is equal to 1 then return < else return /r"
此外,虽然只是我的答案张贴到另一个相关的问题,我有,
a = x ? : y;
相当于:
a = x ? x : y;
如果x是虚假或null,则y的值取。
他们被称为三元运算符 ,因为它们是在Java中唯一的一个。
在if ... else结构不同的是,它们返回的东西,而这个东西可以是任何东西:
int k = a > b ? 7 : 8;
String s = (foobar.isEmpty ()) ? "empty" : foobar.toString ();