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

📅  最后修改于: 2023-12-03 15:01:49.618000             🧑  作者: Mango

Java中String和StringBuffer对象的equals()

在Java中,字符串是一种非常常见的数据类型,并且Java提供了两个不同的字符串实现:String和StringBuffer。其中,String是不可变的字符串对象,而StringBuffer则是可变的字符串对象。

本文将介绍Java中String和StringBuffer对象的equals()方法。

String类的equals()方法

String类的equals()方法用于比较字符串的内容是否相等。该方法的签名如下:

public boolean equals(Object anObject)

其中,参数anObject是要比较的对象。如果对象是一个字符串,那么该方法将比较两个字符串的内容是否相等。如果相等,返回true;否则返回false。

下面是一个例子:

String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");

System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true

上述代码中,我们创建了三个字符串对象str1、str2和str3。str1和str2的值相同,且指向相同的字符串常量池中的对象。而str3则是另一个相同值的字符串对象,但是它是通过new运算符创建的,所以它在内存中是一个新的对象。

我们调用str1的equals()方法并传入str2和str3对象。对于str2,它和str1指向相同的字符串常量池中的对象,所以equals()方法返回true。对于str3,它的值和str1相同,但是它在内存中是一个新的对象,所以equals()方法同样返回true。

需要注意的是,在比较字符串时,equals()方法是区分大小写的。如果我们想要忽略大小写,可以使用String类的equalsIgnoreCase()方法。

StringBuffer类的equals()方法

StringBuffer类也有一个名为equals()的方法,但是它与String类的equals()方法不同。在StringBuffer中,equals()方法用于比较两个字符串对象的引用是否相等,也就是比较它们是否指向同一个对象。

下面是一个例子:

StringBuffer sb1 = new StringBuffer("Hello");
StringBuffer sb2 = new StringBuffer("Hello");
StringBuffer sb3 = sb1;

System.out.println(sb1.equals(sb2)); // false
System.out.println(sb1.equals(sb3)); // true

上述代码中,我们创建了三个StringBuffer对象sb1、sb2和sb3。sb1和sb2的值相同,但指向不同的对象;而sb3则是sb1的引用,它们指向同一个对象。

我们调用sb1的equals()方法并传入sb2和sb3对象。对于sb2,它和sb1指向不同的对象,所以equals()方法返回false。对于sb3,它是sb1的引用,它们指向同一个对象,所以equals()方法返回true。

需要注意的是,在比较StringBuffer对象时,equals()方法仅比较两个对象的引用是否相等,而不比较它们的值是否相等。如果我们想要比较StringBuffer对象的值是否相等,可以先将它们转换为String类型,然后调用String的equals()方法。

总结

在Java中,String和StringBuffer都有一个名为equals()的方法。对于String对象,equals()方法用于比较字符串的内容是否相等;对于StringBuffer对象,equals()方法用于比较两个字符串对象的引用是否相等。

需要注意的是,在比较字符串时,String的equals()方法是区分大小写的,而StringBuffer的equals()方法则不比较值是否相等。如果我们想要比较StringBuffer对象的值是否相等,可以先将它们转换为String类型,然后调用String的equals()方法。