Hola soy nuevo aquí solo pero quiero hacer una pregunta de un problema en Java

este es el problema

public class Ejemplo02 {
public static void main(String[]
args) {
String str1 = new String("aBba");
String str2 ="abBa".toLowerCase();
String str3="abbA".toLowerCase();
if (str3.equalsIgnoreCase(str2))
System.out.println("Java 4.0");
if (str1.equals(str2))
System.out.println("Java 5.0");
if (str1.equalsIgnoreCase(str3))
System.out.println("Java 6.0");
System.out.println(str2==str3);
}
}

la respuesta es

Java 4.0
Java 6.0
false

lo que no entiendo es por que sale false en la ultima pregunta =(

1 Respuesta

Respuesta
1

El problema lo tienes porque estas comparando dos String con == en lugar de utilizar el método equals.

Te recuerdo que los String, a diferencia de los int, double, char etc... son objetos java, y, como tales, han de ser comprados por el método equals, o de lo contrario, le estas preguntado si son el mismos objeto "físicamente", en RAM.

Es decir, tienes dos strings, que son abba, pero son dos objetos diferentes(internamente son iguales) pero son dos objetos distintos en RAM. Entonces, a la que compraras con ==, el be que son objetos distintos y te devuelve false. Mientras que si utilizas el método equals, la persona que creo el objeto(en este caso es un objeto del core de java) ya se encargo de hacer las comprobaciones necesarias "internas" para ver que son iguales, que, en el caso de los String, es que tenga todos los caracteres iguales.

si gracias chevere es que antes de este ejemplo vi uno parecido que era así

String a =" hola mundo";

String b = a;

System.out.println(a == b);

por eso la confusión amigo =(

De nada, un placer ayudar, cualquier otra duda estoy aquí

No te olvides de puntuar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas