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