Poiché sappiamo già che è possibile fare in modo che questo codice valuti il vero grazie alle grandi risposte di Erwin Bolwidt e phflack , ho voluto dimostrare che è necessario mantenere un alto livello di attenzione quando si ha a che fare con una condizione che assomiglia a quella presentata nella domanda, come a volte ciò che vedi potrebbe non essere esattamente quello che pensi che sia.
Questo è il mio tentativo di dimostrare che questo codice viene stampato Success!sulla console. So di aver tradito un po ' , ma penso ancora che sia un buon posto per presentarlo proprio qui.
Non importa quali siano gli scopi di scrivere codice come questo: meglio sapere come affrontare la seguente situazione e come verificare se non ti sbagli con ciò che pensi di vedere.
Ho usato il cirillico "a", che è un carattere distinto dal latino "a". Puoi controllare i caratteri usati nell'istruzione if qui .
Questo funziona perché i nomi delle variabili sono presi da diversi alfabeti. Sono identificatori distinti, creando due variabili distinte con un valore diverso in ciascuna.
Nota che se vuoi che questo codice funzioni correttamente, la codifica dei caratteri deve essere cambiata in una che supporti entrambi i caratteri, ad es. Tutte le codifiche Unicode (UTF-8, UTF-16 (in BE o LE), UTF-32, persino UTF-7 ) o Windows-1251, ISO 8859-5, KOI8-R (grazie - Thomas Weller e Paŭlo Ebermann - per averlo sottolineato):
public class A {
public static void main(String[] args) {
int а = 0;
int a = 1;
if(а == 0 && a == 1) {
System.out.println("Success!");
}
}
}
(Spero che in futuro non dovrai mai affrontare questo tipo di problema.)
&&è unandoperatore logico , il che significa cheadovrebbe avere contemporaneamente i valori 1, 2 e 3, il che è logicamente impossibile. La risposta è NO, impossibile. Vuoi scrivereifun'istruzione che controlli seaha uno dei valori 1, 2 O 3?