search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

java新手問題集錦

Java是目前最流行的編程語言之一——它可以用來編寫Windows程序或者是Web應用,移動應用,網路程序,消費電子產品,機頂盒設備,它無處不在。

有超過30億的設備是運行在Java之上的。根據Oracle的統計數據,光是使用中的JavaCard就有有50億。超過900萬程序員選擇使用Java進行開發,它是最受開發人員歡迎的語言,同時也是最流行的開發平台。

本文為那些准Java程序員們準備了一系列廣為流傳的Java最佳編程實踐:

優先返回空集合而非null

如果程序要返回一個不包含任何值的集合,確保返回的是空集合而不是null。這能節省大量的"ifelse"檢查。

publicclassgetLocationName{

return(null==cityName?"":cityName);

}

01

謹慎操作字元串

如果兩個字元串在for循環中使用+操作符進行拼接,那麼每次循環都會產生一個新的字元串對象。這不僅浪費內存空間同時還會影響性能。類似的,如果初始化字元串對象,盡量不要使用構造方法,而應該直接初始化。比方說:

02

避免無用對象

創建對象是Java中最昂貴的操作之一。因此最好在有需要的時候再進行對象的創建/初始化。如下:

03

數組與ArrayList之爭

開發人員經常會發現很難在數組和ArrayList間做選擇。它們二者互有優劣。如何選擇應該視情況而定。

數組是定長的,而ArrayList是變長的。由於數組長度是固定的,因此在聲明數組時就已經分配好內存了。而數組的操作則會更快一些。另一方面,如果我們不知道數據的大小,那麼過多的數據便會導致ArrayOutOfBoundException,而少了又會浪費存儲空間。

ArrayList在增刪元素方面要比數組簡單。

數組可以是多維的,但ArrayList只能是一維的。

try塊的finally塊沒有被執行

04

在調用System.exit時,JVM會在關閉前執行兩個結束任務:

首先,它會執行完所有通過Runtime.addShutdownHook註冊進來的終止的鉤子程序。這一點很關鍵,因為它會釋放JVM外部的資源。

接下來的便是Finalizer了。可能是System.runFinalizersOnExit也可能是Runtime.runFinalizersOnExit。finalizer的使用已經被廢棄有很長一段時間了。finalizer可以在存活對象上進行調用,即便是這些對象仍在被其它線程所使用。而這會導致不可預期的結果甚至是死鎖。

05

判斷奇數

看下這幾行代碼,看看它們是否能用來準確地判斷一個數是奇數?

publicbooleanoddOrNot(intnum){

returnnum%2==1;

看似是對的,但是每執行四便會有一個錯誤的結果(用數據說話)。考慮到負奇數的情況,它除以2的結果就不會是1。因此,返回值是false,而這樣是不對的。

代碼可以修改成這樣:

publicbooleanoddOrNot(intnum){

return(num&1)!=0;

}

這麼寫不光是負奇數的問題解決了,並且還是經過充分優化過的。因為算術運算和邏輯運行要比乘除運算更高效,計算的結果也會更快。

06

單引號與雙引號的區別:

看起來這段代碼會返回"Haha",但實際返回的是Ha169。原因就是用了雙引號的時候,字元會被當作字元串處理,而如果是單引號的話,字元值會通過一個叫做基礎類型拓寬的操作來轉換成整型值。然後再將值相加得到169。

一些防止內存泄露的小技巧:

內存泄露會導致軟體的性能降級。由於Java是自動管理內存的,因此開發人員並沒有太多辦法介入。不過還是有一些方法能夠用來防止內存泄露的。

查詢完數據后立即釋放資料庫連接

儘可能使用finally塊

釋放靜態變數中的實例

中軟卓越官網:www.whzrgj.com

劉老師:15623074480



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦