1. 程式人生 > >日常Bug(9.10)

日常Bug(9.10)

pty 內存空間 false num ase col pri 日常 println

一不小心又寫了個bug,其實很簡單的一個問題,馬虎馬虎不仔細,特此記錄下來。

Map<String,Object> queryMaxSerialNumber = queryService.queryOne("DhDynamicBaseInfoMapper", "queryMaxSerialNumber", map1);
  if(queryMaxSerialNumber.isEmpty()){
    maxSerialNumber="0";
  }else{
    maxSerialNumber=queryMaxSerialNumber.get("serialNumber").toString();
  }

上述代碼中的queryMaxSerialNumber.isEmpty() 這一塊由於上面的查詢到的queryMaxSerialNumber沒有數據,所以並沒有給Map<String,Object> queryMaxSerialNumber分配內存空間,所以用isEmpty()出錯,而是該用==null。改正如下:

Map<String,Object> queryMaxSerialNumber = queryService.queryOne("DhDynamicBaseInfoMapper", "queryMaxSerialNumber", map1);
  if(queryMaxSerialNumber==null
){   maxSerialNumber="0"; }else{   maxSerialNumber=queryMaxSerialNumber.get("serialNumber").toString(); }

Map的isEmpty()與==null的區別如下:

isEmpty()方法判斷Map是否有內容(即new分配空間後是否put鍵值對),若沒有內容則true,否則false

== null是判斷map是否為null(即是否new分配空間,和其中的鍵值對沒關系),若沒有內容則true,否則false

Map map = new HashMap<String ,String>();
System.out.println(
"判斷map是否有內容:"+map.isEmpty());//返回true System.out.println("判斷map是否為null:"+map==null);//返回false
 Map map = new HashMap<String ,String>();
 map=null;
 System.out.println("判斷map是否為null:"+(map==null));//結果為true
 System.out.println("判斷map是否有內容:"+map.isEmpty());//NullPointerException
Map map = new HashMap<String ,String>();
 map.put(null,null);
 System.out.println("判斷map是否為null:"+(map==null));//false
 System.out.println("判斷map是否有內容:"+map.isEmpty());//false

特此記錄以防再犯

日常Bug(9.10)