什么是问号“?”和“冒号”:“操作员用于?
关于使用问号“?”的两个问题 和打印function括号内的冒号“:”运算符:它们做什么? 另外,有没有人知道他们的标准术语,或者我可以find更多关于他们的使用信息? 我读过,他们是类似于“如果”“其他”的声明。
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(); }
这是三元条件运算符 ,可以在任何地方使用,而不仅仅是打印语句。 它有时被称为“三元运算符”,但它不是唯一的三元运算符 ,只是最常见的一个。
维基百科展示了它的一个很好的例子:
在C,Java和JavaScript中编写一个传统的if-else结构:
if (a > b) { result = x; } else { result = y; }
这可以被重写为以下语句:
result = a > b ? x : y;
基本上它采取的forms是:
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>"); }
a=1; b=2; x=3; y=4; answer = a > b ? x : y;
answer=4
因为条件是假的它需要y值。
一个问号(?)
。 如果条件为真,则使用该值
冒号(:)
。 如果条件为false,则使用该值
也许它可以成为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为false或null,则取y的值。
他们被称为三元运算符,因为它们是Java中唯一的一个。
与if … else结构的不同之处在于它们返回一些东西,而这可以是任何东西:
int k = a > b ? 7 : 8; String s = (foobar.isEmpty ()) ? "empty" : foobar.toString ();