equals 与 ==

equals只是比较值是否相同

而==则是比较两个变量 是不是同一个变量,也应时是说
要看看这两个变量是不是引用的同一个地址,
Java 中只有引用地址相同的两个变量才被视为==
如果明白值传递与地址传递的话,这个问题应该不难理解
a==null与 null==a 

null放在前面就是为了避免变量为空时 引了空指针异常
如: if(a==null) 如果a 真为空时,现在就相当用调用了变量a的方法,a 都为空了还调用他的方法,当然会引发空指针异常了,但写成if(null==a)就不会了

if(str==null||str.equals("")){
 return 0;}

因为在java里,String是一个对象,如果对象不存在,就返回0,或对象存在,但包含的字符为"",也返回0,上面那if就是这个意思了。

如果equals的左边是空值 会出现空指针异常

public class Test {
    public static void main(String[] args) {
           String string=null;
           if(!string.equals(""))
           {
               System.out.println("---------");
           }
    }
    
}

如果把可能为空的变量放在右边 不会有事

public class Test {
 2    public static void main(String[] args) {
 3           String string=null;
 4           if(!"ccc".equals(string))
 5           {
 6               System.out.println("---------");
 7           }
 8    }
 9}

public class Test {
 2    public static void main(String[] args) {
 3           String string=null;
 4           if(!"ccc".equals(string))
 5           {
 6               System.out.println("---------");
 7           }
 8    }
 9}