Я изучаю Java некоторое время и все еще изучаю новые синтаксические трюки и прочее. Я столкнулся с этим в исходном коде Android:
boolean retry = id == 1;
Что это значит?
Я изучаю Java некоторое время и все еще изучаю новые синтаксические трюки и прочее. Я столкнулся с этим в исходном коде Android:
boolean retry = id == 1;
Что это значит?
retry true, если id имеет значение 1, иначе retry - false.
id == 1 - это логическое выражение, которое истинно, если id равно 1, а false в противном случае.
boolean retry = id == 1; объявляет логическую переменную с именем retry и присваивает этой переменной значение булевского выражения id == 1.
Таким образом, он объявляет логическую переменную, которая истинна, если id == 1 и false в противном случае.
Чтобы сделать его более понятным, вы можете записать его так:
boolean retry = (id == 1);
Это то же самое, что и
boolean retry;
if (id == 1)
retry = true;
else
retry = false;
==, который является предикатом равенства, имеет более высокий приоритет, чем =, который является оператором присваивания.
Следовательно, сначала оценивается id == 1, а затем его значение (true или false) присваивается retry.
Булевский повтор получает значение true, если id == 1.
Это то же самое, что:
boolean retry;
if (id == 1) {
retry = true;
} else {
retry = false;
}
сначала id оценивается с 1, поэтому предположительно id является integer.
После этого этому значению присваивается значение retry, поэтому, если id равно 1, retry станет true, а для любого другого значения id retry станет false.
Эта строка создает логическую переменную и устанавливает ее в true, если id равно 1 и false, если это не так.
Он действует как тройная операция, (x) ? true : false в C, С++, С# и т.д.
Аналогичный синтаксис:
boolean retry = (id == 1)? true: false;
Или это может быть написано другим способом:
boolean retry;
if (id == 1) {
retry = true;
} else {
retry = false;
}
Я нахожу, что просто использование parens помогает устранить путаницу за сложными заявлениями вроде этого.
boolean retry = (id == 1); Имеет для меня гораздо больше смысла. Здесь ясно, что (id == 1) - это выражение, которое оценивается, и результат присваивается boolean retry
Это способ определения булевой переменной.
Если id - 1, значение retry будет true.
retry присваивает выражение, которое будет либо истинным, либо ложным, поскольку retry является boolean.
Кроме того, сначала будет решено ==, а затем будет назначено retry.
Возможно, было бы легче увидеть, что происходит, если вы посмотрите на это следующим образом:
boolean retry = (id == 1);
Таким образом, в основном он проверяет, равен ли id равному 1, а затем присваивает результат переменной-попытке.
Это в основном то же самое, что и retry = (id == 1). Он оценивает логическое выражение и присваивает его retry.
Логическая переменная retry получит значение 0 или 1 в зависимости от того, возвращает ли выражение id==1 true или false.
Если значение id равно 1, то id==1 будет соответствовать true, таким образом retry=1.
И если значение id равно 0, то id==1 будет соответствовать false, таким образом retry=0.
Обратите внимание, что == является оператором сравнения.
Я буду основывать свой ответ на предположении, что id является int, поэтому сравнение с 1 является правильным, и ошибка компиляции отсутствует. == является оператором равенства в java, как описано в разделе 15.21.1 JLS. Будучи булевым оператором, == выводит значение boolean. = - оператор присваивания java, в данном конкретном случае это оператор составного назначения, имеющий следующий синтаксис:
boolean f = (op1 op op2)
In translation = присваивает выходное значение операции (op1 op op2) левому операнду, в данном случае f.
Оглядываясь на ваш образец, вывод id == 1 (true, если id имеет значение 1, иначе false) присваивается повторить.
В заключение на простом английском языке ваш образец имеет следующее значение: Повторите попытку, пока id имеет значение 1.
1.int id = 1;
boolean retry = id == 1;
что означает retry = true;.
2.int id = 2;
boolean retry = id == 1;
что означает retry = false;.
Упрощение id == 1 можно рассматривать как
if ( id == 1 ){
}