Ponieważ już wiemy, że dzięki świetnym odpowiedziom Erwina Bolwidta i phflacka można sprawić, by ten kod był prawdziwy , chciałem pokazać, że należy zachować wysoki poziom uwagi, gdy mamy do czynienia ze stanem, który wygląda jak ten przedstawiony w pytaniu, ponieważ czasami to, co widzisz, może nie być dokładnie tym, o czym myślisz.
To jest moja próba pokazania, że ten kod jest drukowany Success!na konsoli. Wiem, że trochę oszukiwałem , ale nadal uważam, że to dobre miejsce, aby to tutaj zaprezentować.
Bez względu na cel pisania takiego kodu - lepiej wiedzieć, jak postępować w następującej sytuacji i jak sprawdzić, czy nie mylisz się w tym, co myślisz, że widzisz.
Użyłem cyrylicy „a”, która jest znakiem odrębnym od łacińskiego „a”. Można badać znaki użyte w instrukcji if tutaj .
To działa, ponieważ nazwy zmiennych są pobierane z różnych alfabetów. Są to różne identyfikatory, tworzące dwie odrębne zmienne o innej wartości w każdej.
Zwróć uwagę, że jeśli chcesz, aby ten kod działał poprawnie, kodowanie znaków należy zmienić na obsługujące oba znaki, np. Wszystkie kodowania Unicode (UTF-8, UTF-16 (w BE lub LE), UTF-32, a nawet UTF-7 ) lub Windows-1251, ISO 8859-5, KOI8-R (dziękuję - Thomasowi Wellerowi i Paŭlo Ebermannowi - za wskazanie):
public class A {
public static void main(String[] args) {
int а = 0;
int a = 1;
if(а == 0 && a == 1) {
System.out.println("Success!");
}
}
}
(Mam nadzieję, że nigdy nie będziesz musiał zajmować się tego rodzaju problemem w przyszłości.)
&&jestandoperatorem logicznym , co oznacza, żeapowinien mieć jednocześnie wartość 1, 2 i 3, co jest logicznie niemożliwe. Odpowiedź brzmi NIE, nie jest możliwa. Czy chcesz napisaćifoświadczenie, które sprawdza, czyama jedną z wartości 1, 2 LUB 3?