Kan*_*nth 1 java string equals palindrome
我编写了代码来检查给定的字符串是否是回文.但在这里我没有显式创建任何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");
}
}
Run Code Online (Sandbox Code Playgroud)
代码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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用StringBuilder/Buffer.toString()将创建一个新实例,因此equals()的工作原理,但==没有.在使用字符串文字的情况下,任何字符串文字的字符串都将被添加到类的常量池中,因此string1和string2将仅指向常量池中"hello"的相同引用,ergo ==说的是真的,因为它们是相同的参考.