对于字符串比较,我的习惯用法是变量.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);