我已经编写了代码来检查给定的字符串是否是回文。但是在这里,我没有显式创建任何String对象。当我们不明确创建时,“ ==”也应该用于比较字符串。但是在这里,如果我使用==,我将无法获得正确的输出。为了清楚起见,我还在下面给出了另一个代码

代码1:在这里。 “ ==”不起作用。

class Palindrome
{
    public static void main(String[] args)
    {

        StringBuffer sb1=new StringBuffer();
        sb1.append("anna");
        String s1=sb1.toString();
        StringBuffer sb2=new StringBuffer();
        sb2=sb1.reverse();
        String s2=sb2.toString();
        if(s1.equals(s2))
        {
            System.out.println("The given String is a Palindrome");
        }
        else

            System.out.println("Not a Palindrome");

    }
}


代码2:这里==有效

class Stringdemo
{
    public static void main(String[] args)
    {
        String str1="hello";
        String str2="hello";
        if(str1==str2)
        {
            System.out.println("both strings are same");
        }
        else
        {
            System.out.println("both strings are not Same");
        }
    }
}

最佳答案

使用StringBuilder / Buffer.toString()将创建一个新实例,因此为什么equals()起作用,但==无效。在使用字符串文字的情况下,任何作为字符串文字的字符串都将添加到该类的常量池中,因此string1和string2将仅指向常量池中“ hello”的相同引用,ergo ==说是正确的,因为它们是相同的参考。

10-08 07:16