Что такое знак вопроса "?"а двоеточие": "оператор используется для? [дубликат]
этот вопрос уже есть ответ здесь:
два вопроса об использовании вопросительного знака"?"and colon": "оператор в круглых скобках функции печати: что они делают? Кроме того, кто-нибудь знает стандартный термин для них или где я можете найти более подробную информацию об их использовании? Я читал, что они похожи на утверждение " 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();
}
7 ответов
это тернарный условный оператор, который можно использовать в любом месте, а не только оператор печати. Иногда это просто называется "тернарным оператором", но это не единственный тернарный оператор, только самый распространенный.
вот хороший пример из Википедии, демонстрирующий, как это работает:
традиционная конструкция 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, равный
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
поскольку условие false, оно принимает значение 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...остальное строится на том, что они возвращают что-то, а это что-то может быть что угодно:
int k = a > b ? 7 : 8;
String s = (foobar.isEmpty ()) ? "empty" : foobar.toString ();