對於字符串比較,我的習慣用法是 變量.equals(常量)
比如: a.equals("a")
今天看視頻才知道變量在前面與后面有很大影響,正確的寫法是常量放前面(可以避免變量為null引起的異常),變量放后面,則上面需要改為("a").equals(a)。
對於JDK API上字符串的equals的官方解釋是:
比如:
public class equalsTest { @SuppressWarnings("rawtypes") public static void main(String args[]) { List list = new ArrayList(); String str = null; System.out.println("0".equals(str)); System.out.println(str.equals("0")); System.out.println("0".equals(list.get(2))); System.out.println(list.get(2).equals("0")); } }
上面依次輸出:
false
java.lang.NullPointerException
java.lang.IndexOutOfBoundsException: Index: 2, Size: 0
java.lang.IndexOutOfBoundsException: Index: 2, Size: 0
對於判斷是否為空 str!=null,這個應該變量放前面后面一般沒影響,養成好的習慣的話變量也放在后面。一般對一個字符串進行判斷首先進行非空判斷,然后進行字符串內容判斷,一個正確的例子:
null !=string && !("").equals(string.trim()) && !("null").equals(string);