我已经编写了代码来检查给定的字符串是否是回文。但是在这里,我没有显式创建任何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 ==说是正确的,因为它们是相同的参考。