【发布时间】:2019-06-27 19:42:45
【问题描述】:
源代码:
public class TestSB{
public static void main(String args[]){
String s1="Arnold";
StringBuffer sb1=new StringBuffer("Arnold");
StringBuffer sb2=new StringBuffer("Arnold");
System.out.println(sb1==sb2);
System.out.println(sb1.equals(sb2)); //should be true but printing false
System.out.println(sb1.equals(s1)); //should be true but printing false
}
}
上面是我写的源代码,第 7 行和第 8 行的输出都应该是真的,但它是假的,这背后的原因是什么?
输出:
false
false
false
【问题讨论】:
-
请使用Tour 并阅读Help Center 中的文档。特别是,您应该阅读关于how to ask a good question 以及on topic 的此类问题。
-
如果您在格式化代码时遇到问题,SO 有一个markdown help page 可以帮助您。
-
传递StringBuffer的对象时比较引用,因为StringBuffer没有覆盖Object类的equals方法。
-
为什么“应该”是
true?您是否假设StringBuffer与String相同?您是否查看了StringBuffer的文档以查看它实现了什么equals?和所有其他 cmets:问题需要独立存在,文本图像的链接仅比文本图像更糟糕:发布文本。
标签: java string stringbuffer