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在前是個好習慣

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

注:以上代碼都經過測試

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM