字符串比较应使用equals()方法而非==,因为==比较的是对象引用地址,即使内容相同也可能返回false;而equals()比较实际内容,推荐将常量放在前面以防空指针,忽略大小写可用equalsIgnoreCase(),排序比较则用compareTo()。
在Java中,字符串比较是一个常见但容易出错的操作。很多初学者会误用==来比较字符串内容,导致逻辑错误。正确的做法是使用equals()方法来比较字符串的值。
==比较的是对象的引用地址,而不是字符串的内容。即使两个字符串内容相同,只要它们是不同的对象,==就可能返回false。
例如:
String str1 = new String("hello");虽然str1和str2内容一样,但==返回false,因为它们是两个不同的对象。
要比较两个字符串的实际内容是否相同,应使用equals()方法。
equals()区分大小写例如:
"hello".equals(str) // 推荐,即使str为null也不会报错
NullPointerException
如果需要忽略大小写比较,使用equalsIgnoreCase()方法。
示例:
String str1 = "Hello";如果想判断字符串的字典顺序,比如排序或查找大小,使用compareTo()方法。
示例:
"apple".compareTo("banana"); // 返回负数基本上就这些。记住:比较字符串内容用equals(),别用==,就能避免大多数问题。