gpt4 book ai didi

Java 字符串缓冲区

转载 作者:行者123 更新时间:2023-12-01 06:44:58 29 4
gpt4 key购买 nike

StringBuffer 在内部如何处理字符串?我尝试运行下面的示例并得到答案“字符串不相等”。

据我所知,如果两个字符串具有相同的值,则 equals() 返回 true。那么这个案例中到底发生了什么?

class StringBufferTest {

public static void main(String[] args) {
String newString = "HelloWorld";
StringBuffer buffer = new StringBuffer(newString);

if (buffer.equals(newString)) {
System.out.println("Strings are equal");
} else {
System.out.println("String are unequal");
}

}
}

最佳答案

您正在将 StringBuffer 实例与 String 实例进行比较,这不会因为不同类型而给出所需的结果。请注意,StringBuffer 将使用普通的 Object#equals因为它不会覆盖它(由 StringBuffer JavaDoc 相对于 String#equals 指出,确实覆盖了它)。您必须比较 bufferString 内容,而不是 buffer 变量的对象引用:

if (buffer.toString().equals(newString)) {
//...
}

此外,从 Java 5 开始,使用 StringBuilder 而不是 StringBuffer 会更好。有关此的更多信息:Difference between StringBuilder and StringBuffer

关于Java 字符串缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17553550/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com