河北快3 200期走势图|河北快3试机号

學Java編程中哪些問題容易忘記?


  在寫代碼的過程中,我們很容易忽略一些問題,針對這些問題小編匯總了以下幾點,希望可以幫助到大家:


學Java編程中哪些問題容易忘記?.jpg


  糾結的同名


  現象


  很多類的命名相同(例如:常見于異常、常量、日志等類),導致在import時,有時候張冠李戴,這種錯誤有時候很隱蔽。因為往往同名的類功能也類似,所以IDE不會提示warn。


  解決


  寫完代碼時,掃視下import部分,看看有沒有不熟悉的。替換成正確導入后,要注意下注釋是否也作相應修改。


  啟示


  命名盡量避開重復名,特別要避開與JDK中的類重名,否則容易導入錯,同時存在大量重名類,在查找時,也需要更多的辨別時間。


  不要影響彼此


  現象


  在釋放多個IO資源時,都會拋出IOException,于是可能為了省事如此寫:


  publicstaticvoidinputToOutput(InputStreamis,OutputStreamos,booleanisClose)throwsIOException{BufferedInputStreambis=newBufferedInputStream(is,1024);BufferedOutputStreambos=newBufferedOutputStream(os,1024);….if(isClose){bos.close;bis.close;}}


  假設bos關閉失敗,bis還能關閉嗎?當然不能!


  解決辦法


  雖然拋出的是同一個異常,但是還是各自捕獲各的為好。否則第一個失敗,后一個面就沒有機會去釋放資源了。


  啟示


  代碼/模塊之間可能存在依賴,要充分識別對相互的依賴。


  忘設初始容量


  現象


  在JAVA中,我們常用Collection中的Map做Cache,但是我們經常會遺忘設置初始容量。


  cache=newLRULinkedHashMap<K,V(maxCapacity);


  解決


  初始容量的影響有多大?拿LinkedHashMap來說,初始容量如果不設置默認是16,超過16×LOAD_FACTOR,會resize(2*table.length),擴大2倍:采用EntrynewTable=newEntry[newCapacity];transfer(newTable),即整個數組Copy,那么對于一個需要做大容量CACHE來說,從16變成一個很大的數量,需要做多少次數組復制可想而知。如果初始容量就設置很大,自然會減少resize,不過可能會擔心,初始容量設置很大時,沒有Cache內容仍然會占用過大體積。其實可以參考以下表格簡單計算下,初始時還沒有cache內容,每個對象僅僅是4字節引用而已。


  啟示


  不僅是map,還有stringBuffer等,都有容量resize的過程,如果數據量很大,就不能忽視初始容量可以考慮設置下,否則不僅有頻繁的resize還容易浪費容量。


  在Java編程中,除了上面枚舉的一些容易忽視的問題,日常實踐中還存在很多。相信在不斷的實踐中自己就可以發現并改正。


  


  


上一篇:培訓機構畢業的學員找不到工作?
下一篇:Java面試題系列之Java基礎類庫(三)

開班信息

河北快3 200期走势图 今日竞彩比分推荐 体球即时比分网007qq 篮球比分直播捷报 下载河北十一选五官方app p3开机号 nba比分直nba比分直播 快乐赛车 黑龙江快乐10分开奖查询网 电竞比分网1zplay api 迅影网球比分直播