java中的字符串缓冲区 导入java.lang.*; 同学们好 { 公共静态字符串参数[] { StringBuffer s3=新的StringBufferR; 字符串s1=Rahul; char ch=s1.charAt0; System.out.printlns3.toString.equalsch; } }
输出应为真,但显示为假。请提供帮助。如果类型不同,则大多数等号的ovverriding不会返回true 字符串的equals实现如下所示:java中的字符串缓冲区 导入java.lang.*; 同学们好 { 公共静态字符串参数[] { StringBuffer s3=新的StringBufferR; 字符串s1=Rahul; char ch=s1.charAt0; System.out.printlns3.toString.equalsch; } },java,string,Java,String,输出应为真,但显示为假。请提供帮助。如果类型不同,则大多数等号的ovverriding不会返回true 字符串的equals实现如下所示: 1012 public boolean equals(Object anObject) { 1013 if (this == anObject) { 1014 return true; 1015 } 1016 if (anObject instanceof String) {
1012 public boolean equals(Object anObject) {
1013 if (this == anObject) {
1014 return true;
1015 }
1016 if (anObject instanceof String) {
...
1030 }
1031 return false;
1032 }
在这里,由于需要一个对象,您正在比较一个字符串和一个字符的自动装箱
您可以做的是确保将字符串与字符串进行比较:
System.out.println(s3.toString().equals(""+ch));
或者简单地比较字符,因为您知道ch是一个字符:
System.out.println(s3.charAt(0)==ch);
如果类型不同,则大多数equals的ovverriding不会返回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 }
在这里,由于需要一个对象,您正在比较一个字符串和一个字符的自动装箱
您可以做的是确保将字符串与字符串进行比较:
System.out.println(s3.toString().equals(""+ch));
或者简单地比较字符,因为您知道ch是一个字符:
System.out.println(s3.charAt(0)==ch);
它与StringBuffer无关,因为您将字符串R与字符“R”进行比较。它与StringBuffer无关,因为您将字符串R与字符“R”进行比较。您将字符串R与字符“R”进行比较,根据Java,字符“R”不相等,因为类型不匹配。您正在将字符串R与字符“R”进行比较,根据Java,字符“R”不相等,因为类型不匹配。您正在检查字符串s2.toString和字符ch之间的相等性。因此,它返回了false。对于相等性检查,您应该首先将char键入String。 您可以使用以下代码:
System.out.println(s3.toString().equals(String.valueOf(ch)));
您正在检查字符串s2.toString和字符ch之间的相等性。因此,它返回了false。对于相等性检查,您应该首先将char键入String。 您可以使用以下代码:
System.out.println(s3.toString().equals(String.valueOf(ch)));
@Juvanis:它根据String.equalsObject参数和字符到字符的自动装箱进行编译。param不限于字符串。@Steph刚刚注意到,对不起=另外,更喜欢StringBuilder而不是StringBuffer。@Juvanis:它根据String.equalObject参数和字符到字符的自动装箱进行编译。param不限于字符串。@Steph刚刚注意到,对不起=此外,更喜欢StringBuilder而不是StringBuffer。