Я изучаю 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 ){
}