equals() 方法如何在字符串缓冲区中工作?
How equals() method work in String Buffer?
我在 netbeans 中尝试了以下代码,我收到的输出值为 false
我想知道 equal()
是如何工作的。
我的代码是:
StringBuffer x=new StringBuffer("Hey");
StringBuffer y=new StringBuffer("Hey");
System.out.println(x.equals(y)); // my output was false
StringBuffer
不会覆盖 Object.equals
方法,因此它不会执行字符串比较。相反,它正在执行直接对象比较。您的条件也可以是 if(s1==s2)
。如果您想比较字符串,您需要先将缓冲区转换为字符串。
See http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuffer.html
编辑:我假设我们处在一个 Java 世界中。如果你在单线程环境中,或者你的缓冲区被隔离到一个线程,你真的应该使用 StringBuilder
而不是 StringBuffer
.
Does the StringBuffer equals method compare content?
直接看源码*
.
你会看到它只是调用 Object
的 equals
public boolean equals(Object obj) {
return (this == obj);
}
也考虑使用 StringBuilder
参见 Difference between StringBuilder and StringBuffer
*
如果使用 Eclipse ctrl 并单击对象,并且如果源代码已加载到您的系统中,它将带您到那里
您是在比较对象,而不是字符串。而那些是不平等的。
在两个 Stringbuffer 上调用 toString() 并比较结果字符串。
只是比较天气两个对象是否等于"this"
例子
它是自反的:对于任何非空参考值 x,x.equals(x) 应该 return true
我在 netbeans 中尝试了以下代码,我收到的输出值为 false
我想知道 equal()
是如何工作的。
我的代码是:
StringBuffer x=new StringBuffer("Hey");
StringBuffer y=new StringBuffer("Hey");
System.out.println(x.equals(y)); // my output was false
StringBuffer
不会覆盖 Object.equals
方法,因此它不会执行字符串比较。相反,它正在执行直接对象比较。您的条件也可以是 if(s1==s2)
。如果您想比较字符串,您需要先将缓冲区转换为字符串。
See http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuffer.html
编辑:我假设我们处在一个 Java 世界中。如果你在单线程环境中,或者你的缓冲区被隔离到一个线程,你真的应该使用 StringBuilder
而不是 StringBuffer
.
Does the StringBuffer equals method compare content?
直接看源码*
.
你会看到它只是调用 Object
的 equals
public boolean equals(Object obj) {
return (this == obj);
}
也考虑使用 StringBuilder
参见 Difference between StringBuilder and StringBuffer
*
如果使用 Eclipse ctrl 并单击对象,并且如果源代码已加载到您的系统中,它将带您到那里
您是在比较对象,而不是字符串。而那些是不平等的。 在两个 Stringbuffer 上调用 toString() 并比较结果字符串。
只是比较天气两个对象是否等于"this" 例子 它是自反的:对于任何非空参考值 x,x.equals(x) 应该 return true