1、判斷double或Double類型的變量用法
? ? 不好的寫法:double amount = 1.0; ?if(amount == 0) {}
? ?正確的寫法:if(Double.doubleToLongBits(amount) == 0)){}
? doubleToLongBits根據(jù)浮點(diǎn)雙精度格式位布局,返回值表示浮點(diǎn)數(shù)的位。
2、try--catch中的異常信息,一定要捕獲
? ? ? 以下兩種寫法都會(huì)產(chǎn)生嚴(yán)重的技術(shù)債:
1)try---catch(Exception e) {logger.error("異常信息")}
2)try--catch(Exception e){e.printStackTrace();}
正確的寫法:try---catch(Exception e) {logger.error("異常信息:{}", e)}
3、new BigDecimal的正確寫法
錯(cuò)誤寫法:BigDecimal dString= new BigDecimal(num1 * Math.pow(10d, num2));
正確寫法:BigDecimal dString= BigDecimal.valueOf(num1 * Math.pow(10d, num2));
4、java transient關(guān)鍵字
? ?錯(cuò)誤的寫法:private Object data;
? ?正確的寫法:private transient Object data;
? ? ?有些類的有些屬性需要序列化,而其他屬性不需要被序列化,打個(gè)比方,如果一個(gè)用戶有一些敏感信息(如密碼,銀行卡號(hào)等),為了安全起見(jiàn),不希望在網(wǎng)絡(luò)操作(主要涉及到序列化操作,本地序列化緩存也適用)中被傳輸,這些信息對(duì)應(yīng)的變量就可以加上transient關(guān)鍵字。換句話說(shuō),這個(gè)字段的生命周期僅存于調(diào)用者的內(nèi)存中而不會(huì)寫到磁盤里持久化。