java程式碼中常見的坑
阿新 • • 發佈:2019-01-09
(1)空指標
null.get()或者null.set()都是空指標
解決方法:
null.get()或者null.set()都是空指標
解決方法:
每次拿到一個變數值,都判空:非空一個邏輯;空一個邏輯即可
(2)迴圈的插入
例如list.add(a);
a必須在迴圈內部new
(3)String.split()方法引數需要轉譯
String[] arr = amtStr.split("\\.");
String[] arr = amtStr.split("\\|");
對於最後存在空值的情況,預設會出現忽略空值,導致分隔後的欄位個數有誤,解決方法:先用##代替空格,後面再替換(4)建立目錄時儘量用建立多級目錄的new File().mkdirs(),不要用new File().mkdir(),避免報錯/** * * 按照|分割檔案一行內容,用"|##|"代替空格||,避免結尾||分割後丟失問題 * * @param lineData */ private String[] splitLineData(String lineData){ while (true) { lineData = lineData.replaceAll("[|][|]", "|##|"); if (!lineData.contains("||")) break; } if (lineData.lastIndexOf("|") == (lineData.length() - 1)) { lineData = lineData + "##"; } String[] datas = lineData.split("\\|"); return datas; }
String path = "D:/bfjTest/BFJ/123/456";
new File(path).mkdirs();
(5)程式碼中需要有適當的便於除錯的日誌比如呼叫別的介面後,需要打印出請求和響應資訊
(6)Oracle欄位慎用CHAR型別,除非該欄位值確定是固定長度
否則若位數不足,會自動補齊,但是若用到該欄位做查詢條件,又會查不到。
(7)亂碼問題
JSP頁面提交到後臺的中文亂碼問題解決:
String objAccountName = request.getParameter("objAccountName"); objAccountName=new String(objAccountName.getBytes("ISO8859-1"),"utf-8");
後臺返回JSP頁面的中文亂碼問題解決:
@RequestMapping(value="/merChgNotice",method = RequestMethod.POST,produces = "application/json;charset=utf-8")
注意:檔名、檔案存放路徑等不要使用中文,否則很容易處理時亂碼
(8)BigDecimal欄位的累加問題
必須要賦值,否則起不到累加效果。區別於基本型別
failAmt = failAmt.add(jyMcBatDfDl.getDfAmt());
(9)properties屬性檔案內容中,=左右兩邊不能有空格,對於金鑰等很長的字串拷貝時不能換行
(10)任務排程問題
任務儘量通過排程中心排程,不要自行排程。因為在測試或者實際的生產環境上通常是多例項部署,自行排程容易互相沖突
(11)標準的關閉流寫法
public void processFile(String fName) throws FileNotFoundException, IOException {
FileInputStream fis;
try {
fis = new FileInputStream(fName);
int sz;
byte[] byteArray = new byte[BLOCK_SIZE];
while ((sz = fis.read(byteArray)) != -1) {
processBytes(byteArray, sz);
}
}
finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
log(e);
}
}
}
}
(12)金額欄位,格式轉換時要慎重
Double轉String,直接用toString是科學計數法,超過7位的都是用科學計數法顯示字串的。。。。所以導致20100000.00分轉化成String為2.01E7。
解決方法:使用功能強大的BigDecimal
(13)
老婆在家,打算開個淘寶小店賣童裝,苦於不懂店鋪的基本裝修、排版等等各類雜事,還請讀者有了解這塊的幫忙留言指導一下,小可不甚感激