Como ya sabemos que es posible hacer que este código se evalúe como verdadero gracias a las excelentes respuestas de Erwin Bolwidt y phflack , quería mostrarle que debe mantener un alto nivel de atención cuando se trata de una condición similar a la presentada en la pregunta, ya que a veces lo que ves puede no ser exactamente lo que crees que es.
Este es mi intento de mostrar que este código se imprime Success!en la consola. Sé que hice trampa un poco , pero sigo pensando que este es un buen lugar para presentarlo aquí mismo.
No importa cuáles sean los propósitos de escribir código como este: es mejor saber cómo lidiar con la siguiente situación y cómo verificar si no está equivocado con lo que cree que ve.
Usé el cirílico 'a', que es un carácter distinto del latín 'a'. Puede inspeccionar los caracteres utilizados en la declaración if aquí .
Esto funciona porque los nombres de las variables se toman de diferentes alfabetos. Son identificadores distintos, que crean dos variables distintas con un valor diferente en cada uno.
Tenga en cuenta que si desea que este código funcione correctamente, la codificación de caracteres debe cambiarse a una que admita ambos caracteres, por ejemplo, todas las codificaciones Unicode (UTF-8, UTF-16 (en BE o LE), UTF-32, incluso UTF-7 ), o Windows-1251, ISO 8859-5, KOI8-R (gracias - Thomas Weller y Paŭlo Ebermann - por señalarlo):
public class A {
public static void main(String[] args) {
int а = 0;
int a = 1;
if(а == 0 && a == 1) {
System.out.println("Success!");
}
}
}
(Espero que nunca tenga que lidiar con ese tipo de problema en el futuro).
&&es unandoperador lógico , lo que significa queadebe tener los valores 1, 2 y 3 al mismo tiempo, lo que es lógicamente imposible. La respuesta es NO, no es posible. ¿Desea escribir unaifdeclaración que verifique siatiene uno de los valores 1, 2 O 3?