输出应该是字符串匹配但它没有

时间:2017-12-13 11:03:54

标签: java string

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

    StringBuffer s1 =  new StringBuffer("madam");
    System.out.print(s1);
    StringBuffer s2 = new StringBuffer(s1.reverse());
    System.out.print("\n"+s2);


    if(s1.equals(s2))
    {
        System.out.print("\nreal string and reverse string are matched");
    }
    else
    {
        System.out.print("\nreal string and reverse string are not matched");
    }

} }

3 个答案:

答案 0 :(得分:0)

StringBuffer将与equals进行参考比较。由于它们不是同一个对象,因此比较返回false。

将您的代码更改为

s1.toString().equals(s2.toString())

这将比较字符串的值。

另外:JavaScript和Java不是一回事。

答案 1 :(得分:0)

您正在比较两个StringBuffer个实例,而不是字符串本身。

尝试添加.toString()将其转换为字符串。

答案 2 :(得分:0)

StringBuffer不会覆盖String中的equals(),它的equals()方法是从java.lang.Object继承的方法,当且仅当“==”为真时返回true。也就是说,它比较了两个不相等的对象的引用。