equals() en objetos String y StringBuffer en Java

Considere los siguientes códigos en Java: 
 

Java

// This program prints false
class GFG {
 
  public static void main(String[] args) {
    StringBuffer sb1 = new StringBuffer("GFG");
    StringBuffer sb2 = new StringBuffer("GFG");
    System.out.println(sb1.equals(sb2));
  }
}
Producción: 

false

 

Java

// This program prints true
class GFG {
 
  public static void main(String[] args) {
    String s1 = "GFG";
    String s2 = "GFG";
    System.out.println(s1.equals(s2));
  }
}
Producción: 

true

 

El resultado es falso para el primer ejemplo y verdadero para el segundo ejemplo. En el segundo ejemplo, el parámetro de equals() pertenece a la clase String , mientras que en el primer ejemplo pertenece a la clase StringBuffer . Cuando se pasa un objeto de String, se comparan las strings. Pero cuando se pasa el objeto de StringBuffer, las referencias se comparan porque StringBuffer no anula el método equals de la clase Object .
Por ejemplo, el siguiente primer programa imprime falso y el segundo imprime verdadero.
 

Java

// This program prints false
class GFG {
 
  public static void main(String[] args) {
    String s1 = "GFG";
    StringBuffer sb1 = new StringBuffer("GFG");
    System.out.println(s1.equals(sb1));
  }
}
Producción: 

false

 

Java

// This program prints true
class GFG {
 
  public static void main(String[] args) {
    String s1 = "GFG";
    StringBuffer sb1 = new StringBuffer("GFG");
    String s2 = sb1.toString();
    System.out.println(s1.equals(s2));
  }
}
Producción: 

true

 

Publicación traducida automáticamente

Artículo escrito por Niraj_Pandey y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *