La comparacion de las cadenas es correcta. Al utilizar == se compara la posicion en memoria de los objetos asi que los dos objetos
String no ocupan el mismo lugar de memoria, aunque tengan la misma cadena (esto es diferente cuando asignas un valor literal a la variable en lugar de crear objetos)
Código Java:
Ver original
System.
out.
println("cadena1 == cadena2: " + (cadena1
==cadena2
? "iguales" : "distintos")); System.
out.
println("cadena3 == cadena4: " + (cadena3
==cadena4
? "iguales" : "distintos"));
Si sigues utilizando
static en la clase
preguntas2, borralo. Tambien te recomiendo que hagas las pruebas pidiendo al usuario los valores de las variables. Si asignas los valores dentro del codigo seguramente el compilador hara algunos ajustes para optimizar y obtendras resultados como los que estas obteniendo.
Si utilizo tu codigo, elimino
static, y pido el valor de
hh3 al usuario obtengo
Código Texto:
Ver originaldistintos
-----
no se puede comparar
Te recomiendo que revises un libro de los que se usan para prepararse para la certificacion de Java SE. En esos libros se explican con mayor detenimiento todas estas cosas que estas preguntando