java中的字符串缓冲区

时间:2013-03-31 08:52:13

标签: java string

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));
    }
}

输出应为TRUE,但显示为false。请帮忙。

4 个答案:

答案 0 :(得分:4)

如果类型不相同,equals的大多数ovverridings都不会返回true。

字符串' 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    }

在这里,您要比较StringCharacter(由于自动装箱,因为需要对象)。

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

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

或简单地比较字符,如您所知ch是一个字符:

    System.out.println(s3.charAt(0)==ch);

答案 1 :(得分:1)

它与StringBuffer无关,因为你将“R”与 char 'R'进行比较

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

System.out.println(s3.toString().equals(String.valueOf(ch)));