class strb
{
static public void main(String...string)
{
StringBuilder s1 = new StringBuilder("Test");
StringBuilder s2 = new StringBuilder("Test");
System.out.println(s1); // output: Test
System.out.println(s2); // Test
System.out.println(s1==s2); // false
System.out.println(s1.equals(s2)); //Line 1 output: false
System.out.println(s1.toString()==s2.toString()); //Line 2 output: false
}
}
只是有一个关于 .equals 的简单问题。
无论对象内容如何,.equals
仅当两个对象引用都指向同一个对象时才返回 true ?
EDIT: 现在我明白了关于.equals
但为什么2号线不返程true
?
EDIT: 我相信==
查看引用变量的地址,因此 s1 和 s2 不能相等。如果我的假设不正确,请纠正我
Yes, StringBuilder
does not覆盖Object
's .equals()
函数,这意味着两个对象引用不相同,结果是false
.
For StringBuilder
,你可以使用s1.toString().equals(s2.toString())
对于您的编辑,您正在调用==
两个不同 String 对象上的运算符。这==
运算符将返回 false,因为对象不同。要比较字符串,您需要使用String.equals()
or String.equalsIgnoreCase()
这与您之前遇到的问题相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)