String,StringBuffer和StringBuilder
這個問題也比較常見。在進行字符串拼接處理的時候,String通常會產生多個對象,而且將多個值緩存到常量池中。例如:
String a=“a”;
String b=“b”;
a=a+b;
這種情況下jvm會產生“a”,“b”,“ab”三個對象。而且字符串拼接的性能也很低。因此通常需要做字符串處理的時候盡量采用StringBuffer和StringBuilder來。
ArrayList和LinkedList的選擇
這個問題比較常見。通常程序員最好能夠對list的使用場景做出評估,然后根據特性作出選擇。ArrayList底層是使用數組實現的,因此隨機讀取數據 會比LinkedList快很多,而LinkedList是使用鏈表實現的,新增和刪除數據的速度比ArrayList快不少。
包裝類和基本類型的選擇
在代碼中,如果可以使用基本數據類型來做局部變量類型的話盡量使用基本數據類型,因為基本類型的變量是存放在棧中的,包裝類的變量是在堆中,棧的操作速度比堆快很多