1
import java.lang.*;
class hello
{
    public static void main(String args[])
    {
         StringBuffer s3 = new StringBuffer("R");
         String s1 = "Rahul";
         char ch = s1.charAt(0);
         System.out.println(s3.toString().equals(ch));
    }
}

Output should be TRUE but it is showing false. Please help.

4

4 回答 4

4

如果类型不同,大多数 ovverridingsequals不会返回 true。

String 的equals实现是这样的:

1012    public boolean equals(Object anObject) {
1013        if (this == anObject) {
1014            return true;
1015        }
1016        if (anObject instanceof String) {
               ...
1030        }
1031        return false;
1032    }

在这里,您正在比较 aString和 a Character(由于自动装箱,因为需要 Object)。

您可以做的是确保将字符串与字符串进行比较:

    System.out.println(s3.toString().equals(""+ch));

或者只是比较字符,你知道ch是一个字符:

    System.out.println(s3.charAt(0)==ch);
于 2013-03-31T08:53:50.427 回答
1

它与 StringBuffer 无关,这是因为您将字符串“R”与字符“R”进行比较

于 2013-03-31T08:53:52.353 回答
1

您正在将字符串"R"与根据 Java 不相等的字符进行比较'R',因为类型不匹配。

于 2013-03-31T08:54:46.660 回答
0

您正在检查String(s2.toString()) 和Character(ch) 之间的相等性。所以,它返回 false 。对于相等性检查,您应该首先将char其类型化为String. 您可以使用以下代码:

System.out.println(s3.toString().equals(String.valueOf(ch)));
于 2013-03-31T08:58:33.730 回答