if (null==id||””.equals(id.trim())) 的錯在哪裡?

來源:互聯網
上載者:User

     今天在公司調了一個很久的錯,也許說到底是出於自己的粗心。

     先看段代碼:

        String id = params.get("id")+"";

         if (null==id||"".equals(id.trim())) {

                     //id 為空白的時候

                   ..................

           }else{

                 ...................

        }

         就看這段代碼會有什麼錯呢,我當時想了很久也想不出來。可是id為空白的時候總是進入了 else 塊,if (null==id||"".equals(id.trim())) 的錯在哪裡呢?

        其實代碼是沒有錯的,錯在的是細節 。我從頁面傳回後台一個id ,id是放在Map中的,Map<String,Object> params。於是我作了這樣的操作:String id = params.get("id")+""; 之所以取得id後加上了“”本想作為一種轉換,要是使用 String id = (String)params.get("id") 那可能就不會有這樣的故事發生了。

        好吧回到這故事上:前台有時候是不把id傳回來的,也就是說 params.get("id")可能會拿到一個 null 值。按道理 null值和空的字串" "我都已經處理了,怎麼就不是我要的結果呢。這時候我進行調試 ,也用列印出來的方法在 控制台輸出:但悲哀的是 你看到 debug中的變數時null 輸出來的也是null 。問題繼續。


       結果:其實後來的發現是 null+""="null" 也就是說 此時的 id =" null"; if (null==id||"".equals(id.trim()))判斷當然為假了 ,控制台輸出的當然也為 null。但是debug變數 是"null",這是我的粗心,後來才發現的。

      結論:喜歡在後面加上雙引號直接轉換成String類型的 朋友要多加留意下吧,寫代碼暈菜的時候,這就是一個致命的 錯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.