- Reliance on default encoding
- 流操作要確定編碼格式
- 標(biāo)準(zhǔn)
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path + item), "UTF-8"));
不使用FileReader in = new FileReader(file);而是改用
InputStreamReader sss = new InputStreamReader(new FileInputStream(file), "utf-8");
filereader 默認(rèn)沒有編碼指定术吗,而使用默認(rèn)方式物喷。
- Method ignores results of InputStream.skip()
- InputStream.skip()方法忽略返回的多個(gè)字符,如果對結(jié)果沒有檢查就沒法正確處理用戶跳過少量字符請求的情況
- Result of integer multiplication cast to long
- Dodgy Code
- 標(biāo)準(zhǔn)
long convertDaysToMilliseconds(int days) { return 1000L*3600*24*days; }
整數(shù)相乘,要顯示標(biāo)注L
- 分析
為什么編譯器不能自動識別呢性锭?答案是:很麻煩,并且這會使用編譯器的效率非常低!對于有匯編經(jīng)驗(yàn)的人來說,應(yīng)該了解用匯編實(shí)現(xiàn)動態(tài)判斷一個(gè)結(jié)果應(yīng)該分配到一個(gè)long的空間還是int的空間有多復(fù)雜吧践樱,而編譯器有不能隨便隨便把int * int 的結(jié)果分配一個(gè)long空間,因?yàn)檫@會非常浪費(fèi)內(nèi)存凸丸,所以出于對效率和資源的考慮拷邢,最后的決定就是,凡是int * int * ....這樣的計(jì)算結(jié)果一律都存放到int空間里甲雅,如果是long * int * .....則一律存放到long空間里解孙,這就解釋了為什么上面要在1000后面加個(gè)"L"了坑填。
- WMI_WRONG_MAP_ITERATOR
- 標(biāo)準(zhǔn)
for (Map.Entry<String, JMenu> entry : menuList.entrySet()) {
mb.add(entry.getValue());
}
- 分析
map的遍歷抛人,采用entry的方式弛姜,效率更高;尤其對大數(shù)量的map妖枚;
不要使用先keyset后查value的方式