如果程序需要比较两个字符串是否相同,用==进行判断就可以了;但如果要判断两个字符串所包含的字符序列是否相同,则应该使用String重写继承自Object类的equals()方法。jdk中src目录下的java.lang.String类的equals()方法源代码如下:
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;
}
String类还是实现了Comparable接口,因此还可以通过String提供的compareTo()方法来判断两个字符串之间的大小。当两个字符串所含的字符序列相等时,程序将返回0。
public class StringDemo2 {
public static void main(String args[]){
String str3 = new String("abc");
String str4 = new String("abc");
if(str3 == str4){
System.out.println("str3与str4是指向同一块内存区域的");
}else if(str3.equals(str4)){
System.out.println("str3与str4所包含的字符序列相等");
}else{
System.out.println("str3与str4不相等");
}
System.out.println(str3.compareTo(str4));
}
}
/*out:
str3与str4所包含的字符序列相等
0
*/