什么是问号? 冒号: “操作符用于什么?”?

关于使用问号的两个问题和冒号“ :”在打印函数的括号内的运算符: 它们是做什么的?还有,有人知道它们的标准术语吗? 或者我在哪里可以找到更多关于它们使用的信息?我读到它们类似于“ 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();
}
406991 次浏览

这是 条件运算符,它可以在任何地方使用,而不仅仅是 print 语句。它有时只是被称为“三元运算符”,但 它不是唯一的三元运算符,只是最常见的一个。

下面是来自维基百科的一个很好的例子,展示了它是如何工作的:

用 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.");

这是一个 if/else 语句等价于

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

它们被称为 三元算符,因为它们是 Java 中唯一的一个。

If... else 结构的不同之处在于,它们返回某个东西,而这个东西可以是任何东西:

  int k = a > b ? 7 : 8;
String s = (foobar.isEmpty ()) ? "empty" : foobar.toString ();

它是一个三元操作符,用简单的英语表示 "if row%2 is equal to 1 then return < else return /r"

虽然我把另一个相关问题的答案也贴出来了,

a = x ? : y;

相当于:

a = x ? x : y;

如果 x 为 false 或 null,则取 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);
}
a=1;
b=2;


x=3;
y=4;


answer = a > b ? x : y;

由于条件为 false,因此取 y 值。

问号(?)
。如果条件为真,则使用的值

冒号(:)
。如果条件为 false,则使用的值