2017-03-03學習筆記
阿新 • • 發佈:2022-05-03
一、String
StringBuffer.toString()原始碼:
@Override
public synchronized String toString() {
if (toStringCache == null) {
toStringCache = Arrays.copyOfRange(value, 0, count);
}
return new String(toStringCache, true);
}
Arrays.copyOfRange用的是System.arraycopy
public static char[] copyOfRange(char[] original, int from, int to) { int newLength = to - from; if (newLength < 0) throw new IllegalArgumentException(from + " > " + to); char[] copy = new char[newLength]; System.arraycopy(original, from, copy, 0, Math.min(original.length - from, newLength)); return copy; }
1.String是值傳入,不是引用傳入。 2.String對String 型別進行改變的時候其實都等同於生成了一個新的 String 物件,然後將指標指向新的 String 物件,而不是StringBuffer;StringBuffer每次結果都會對 StringBuffer 物件本身進行操作,而不是生成新的物件,再改變物件引用。 3.效率比較String
二、jvm知識圖譜
三、Treemap、LinkHashMap
1.TreeMap取出來的是排序後的鍵值對。但如果您要按自然順序或自定義順序遍歷鍵,那麼TreeMap會更好。 2.LinkedHashMap 是HashMap的一個子類,如果需要輸出的順序和輸入的相同,那麼用LinkedHashMap可以實現,它還可以按讀取順序來排列。
四、sql模式
MySQL資料庫中,變數分為 系統變數(以”@@”開頭)和使用者自定義變數。系統變數分為全域性系統變數(global)和會話系統變數(session)。 @@global 僅用於訪問全域性系統變數的值; @@session 僅用於訪問會話系統變數的值; @@ 先訪問會話系統變數的值,若不存在則去訪問全域性系統變數的值; sql_mode 為系統變數,既是全域性系統變數,又是會話系統變數。
五、程式碼的執行順序
父類B靜態程式碼塊->子類A靜態程式碼塊->父類B非靜態程式碼塊->父類B建構函式->子類A非靜態程式碼塊->子類A建構函式