1.
equals
String类中的equals是经过重写了的,检查字符串是否相等可以用以下语句:
s.equals(t); //比较字符串s与t是否相等
如果两字符串结果相等返回true,如果不相等返回false。
2.
compareTo
compareTo按照字典顺序检查两字符串,如果完全相等就返回0,详细用法查看API,这里不做表述。用法如下:
if (s.compareTo(t) == 0) {...} //使用compareTo方法判断字符串是否相等
补充事项:
1.
Java中不能使用 == 来判断字符串是否相等,因为 == 是比较字符串的存放地址是否相同。
2.
c语言的strcmp函数类似于Java的compareTo方法。
3.
Java中使用equalsIgnoreCase方法可以忽略大小写检查字符串是否相等。
傻傻分不清:
有没有人和我一样犯同样的错误,如下:
public class Demo3_5 {
public static void main(String[] args) {
String s1 = "ABC";
String s2 = "ABC";
String s3 = new String("ABC");
String s4 = new String("ABC");
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s3 == s4);
System.out.println(s1.equals(s3));
System.out.println(s3.equals(s4));
}
}
有没有人的结果是:false,false,false,true,true。
肯定不止我一个人中招!!!
正确结果是:
true
false
false
true
true
是不是有不少人初学者疑惑第一个结果,为啥结果是true?不是说 == 不能判断字符串是否相等吗?
其实补充事项中明确说明了,== 是比较字符串的存放地址是否相同。也就是说直接String s = "XXX";
写出来的、内容相同的字符串,它们的地址其实是相同的。具体内容涉及到字符串常量池,感兴趣的可自己搜索。
本人大三学生,因实训时发现自己基础太差,所以重新恶补基础知识,如果哪里有讲错的,请各位大佬指正,谢谢。