Так как мы уже знаем, что этот код можно сделать истинным благодаря отличным ответам Эрвина Болвидта и phflack , я хотел показать, что вам нужно сохранять высокий уровень внимания при работе с условием, похожим на приведенное в вопросе, так как иногда то, что вы видите, может быть не совсем тем, что вы думаете.
Это моя попытка показать, что этот код печатается Success!на консоли. Я знаю, что немного обманул , но я все еще думаю, что это хорошее место, чтобы представить это прямо здесь.
Неважно, каковы цели написания подобного кода - лучше знать, как справиться со следующей ситуацией и как проверить, не ошибаетесь ли вы с тем, что, по вашему мнению, вы видите.
Я использовал кириллицу «а», которая отличается от латинского «а». Вы можете просмотреть символы, используемые в операторе if здесь .
Это работает, потому что имена переменных взяты из разных алфавитов. Это разные идентификаторы, создающие две разные переменные с разными значениями в каждой.
Обратите внимание, что если вы хотите, чтобы этот код работал должным образом, кодировку символов необходимо изменить на кодировку, поддерживающую оба символа, например все кодировки Unicode (UTF-8, UTF-16 (в BE или LE), UTF-32, даже UTF-7). ) или Windows-1251, ISO 8859-5, KOI8-R (спасибо - Томас Веллер и Паŭло Эберманн - за указание на это):
public class A {
public static void main(String[] args) {
int а = 0;
int a = 1;
if(а == 0 && a == 1) {
System.out.println("Success!");
}
}
}
(Надеюсь, вам никогда не придется сталкиваться с подобными проблемами в будущем.)
&&является логическимandоператором, что означает, что онaдолжен иметь значения 1, 2 и 3 одновременно, что логически невозможно. Ответ НЕТ, не возможно. Вы хотите написатьifутверждение, которое проверяет,aимеет ли одно из значений 1, 2 ИЛИ 3?