java判空

一、概述

java中判等似乎很簡單,==用來判斷對象引用(內存地址)是否相同,equals用來判斷值是否相同。你可以試用String對象輕鬆區分這一點。

那麼在null判等(也就是判空操作)時呢?

可以通過如下代碼明白兩個判等的比較:

String name = null;
if(null==name){
     System.out.println("null==name");//通過
 }
if(name==null){
      System.out.println(name);
      System.out.println("name==null");//通過
}
String list = null;
if(!"demo".equals(list)){
     System.out.println("demo.equals(list)");//通過
}
//編譯器會在此處提示一個警告:Null pointer access: The variable list can only be null at this location
if(!list.equals("demo")){
     System.out.println("list.equals(demo)");//不通過
 }

1.通過代碼證明了String類型在==判等時

誰放前,誰放後是一樣的。而null==xxxx這樣的寫法,我覺得只是一個規範習慣的方式,保證你不會少寫=,因爲你寫null=xxx編譯器肯定會給你報錯。

那麼,除了String類型的對象,其他類型的對象呢?是否在試用==時也是誰放前誰放後沒有區別呢?

NullEquals e = null;
if(e==null){
    System.out.println("e==null");//通過
}
if(null==e){
     System.out.println("null==e");//通過
}

結果也一樣,證明了null判等這件事上,哪種對象是無所謂的,誰放前放後都可以。

2.通過上面的代碼證明了使用equals方法時,必須將非空的對象放在前面,null的對象一定不能放在前面。

所以這裏要養成"".equals()方法來判空的操作

二、注意

這兩個判等操作墨守成規的,你實現某個類,重寫它的equals方法最好也是用來判斷他們的值是否相等,否則其他程序員在使用時容易誤會。

總結:判空時,養成null在前是個好習慣

   判等時,爲了避免被判斷對象可能爲空,所以把肯定不爲空的對象放到前面是個好習慣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章