📜  Java中 String 和 StringBuffer 对象的 equals()

📅  最后修改于: 2022-05-13 01:54:52.419000             🧑  作者: Mango

Java中 String 和 StringBuffer 对象的 equals()

考虑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));
  }
}


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));
  }
}


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));
  }
}


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));
  }
}


输出:
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));
  }
}
输出:
true

第一个示例的输出为假,第二个示例的输出为真。在第二个示例中,equals() 的参数属于 String 类,而在第一个示例中,它属于 StringBuffer 类。当传递 String 的对象时,将比较字符串。但是当传递 StringBuffer 的对象时,会比较引用,因为 StringBuffer 没有覆盖 Object 类的 equals 方法。
例如,下面的第一个程序打印 false,第二个打印 true。

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));
  }
}
输出:
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));
  }
}
输出:
true