现在的位置: 首页 > 综合 > 正文

if (null==id||”".equals(id.trim())) 的错在哪里?

2013年08月06日 ⁄ 综合 ⁄ 共 880字 ⁄ 字号 评论关闭

     今天在公司调了一个很久的错,也许说到底是出于自己的粗心。

     先看段代码:

        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类型的 朋友要多加留意下吧,写代码晕菜的时候,这就是一个致命的 错。

【上篇】
【下篇】

抱歉!评论已关闭.