String str = "Java";
StringBuffer buffer = new StringBuffer(str);
if(str.equals(buffer)){
System.out.println("Both are equal");
}else{
System.out.println("Both are not equal");
}
4 个解决方案
#1
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) { //注意这儿
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
#2
一个String ,一个StringBuffer,你比个啥啊
str.equals(buffer.toString()) 肯定返回true
str.equals(buffer.toString()) 肯定返回true
#3
不是同一种对象 肯定是false
#4
你查查API就会发现,equals方法是属于类String的,而不属于类StringBuffer。
因此equals方法就只能操作String类型的对象,而不能操作StringBuffer类型的对象。
所以str.equals(buffer)的返回值应该是false。
因此equals方法就只能操作String类型的对象,而不能操作StringBuffer类型的对象。
所以str.equals(buffer)的返回值应该是false。
#1
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) { //注意这儿
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
#2
一个String ,一个StringBuffer,你比个啥啊
str.equals(buffer.toString()) 肯定返回true
str.equals(buffer.toString()) 肯定返回true
#3
不是同一种对象 肯定是false
#4
你查查API就会发现,equals方法是属于类String的,而不属于类StringBuffer。
因此equals方法就只能操作String类型的对象,而不能操作StringBuffer类型的对象。
所以str.equals(buffer)的返回值应该是false。
因此equals方法就只能操作String类型的对象,而不能操作StringBuffer类型的对象。
所以str.equals(buffer)的返回值应该是false。