- The program will not compile because the creation of bool4 object will cause compilation error.
- The program will produce the output 'true false false'.
- The program will produce the output 'true true true'.
- The program will output 'true false true'.
Entonces... veamos. Si revisamos la especificación de Boolean, veremos que no tiene un constructor del tipo Boolean (Boolena b). ¿Entonces la 1. es correcta?... No!!! Recuerden que desde J2SE 5 se aplica autoboxing, por lo que se extraerá el valor boolean (primitivo) del objeto y será pasado al constructor, por lo que no habrá problemas de compilación.
La primera comparación entre bool1 y bool4 se hace mediante "equals", por ende es una comparación semántica donde se comparan valores. Como bool1 y bool4 tienes valores de "true", entonces la comparación será true. En la siguiente línea, la comparación entre bool2 y bool3 se hace mediante el operador "==" lo que implica que se están comparando direcciones de memoria , por lo que al tratarse de objetos diferentes (cada uno fue instanciado independientemente) la comparación nos arroja "false". De manera similar en la siguiente línea, la comparación de dos objetos diferentes nos arroja "false"
Concluyendo, la respuesta correcta es la 2.
Pregunta tomada de JavaBeat
Publicar un comentario