当前位置: 首页 > 面试题库 >

StringBuilder .equals Java

柯乐童
2023-03-14
问题内容
class strb
{

    static public void main(String...string)
    {
         StringBuilder s1 = new StringBuilder("Test");
         StringBuilder s2 = new StringBuilder("Test");

         System.out.println(s1);
         System.out.println(s2);
         System.out.println(s1==s2);
         System.out.println(s1.equals(s2)); //Line 1
         System.out.println(s1.toString()==s2.toString()); //Line 2
         if(s1.toString()==s2.toString())System.out.println("True"); //Line 3
    }

}

输出是

Test
Test
false
false

只是对.equals有一个简单的问题。

不管对象内容如何,.equals仅当两个对象引用都指向同一对象时才返回true吗?

编辑 :现在我了解有关的部分,.equals但是为什么2号线和3号线也不会返回true

编辑 :我相信==看参考变量的地址,因此s1和s2不能相等。如果我的假设不正确,请纠正我


问题答案:

是,,StringBuilder does not override Object's .equals() function这意味着两个对象引用不同,结果为false。

对于StringBuilder,您可以使用s1.toString().equals(s2.toString())

为了进行编辑,您要==在两个不同的String对象上调用运算符。==由于对象不同,操作员将返回false。要比较字符串,您需要使用String.equals()String.equalsIgnoreCase()

这是你之前遇到的同样的问题



 类似资料:

相关阅读

相关文章

相关问答