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。请帮忙。
答案 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 }
在这里,您要比较String
和Character
(由于自动装箱,因为需要对象)。
您可以做的是确保您将字符串与字符串进行比较:
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)));