Java 無基本字符串類型,java.lang.String 是不可變對象。雙引號字面量自動創建 String 實例。
+ 操作符,編譯器優化為 StringBuilder.append()。"Age: " + 18 → "Age: 18"。substring(begin, end),左閉右開,O(1) 時間(JDK 7+ 無複製,共享底層 char[]/byte[])。length() 返回字符數(code units),注意補充字符(Emoji)佔 2 碼元。charAt(index) 返回 char(UTF-16 碼元);codePointAt(index) 返回完整 Unicode 碼點。equals() 比內容,equalsIgnoreCase() 忽略大小寫,compareTo() 字典序比較。禁用 ==。indexOf()、contains()、replace()、split(regex)。String.format()、MessageFormat、文本塊(Java 13+ """...""")。數組是第一類對象,繼承自 Object,實現 Cloneable、Serializable。長度創建後不可變。
// 靜態初始化
int[] primes = {2, 3, 5, 7, 11};
// 動態初始化
int[] arr = new int[10]; // 默認 0
// 匿名數組(作為參數直接傳遞)
method(new int[]{1,2,3});
風格統一:int[] arr ✓,int arr[] ✗(C 風格)。
arr.length(屬性而非方法)獲取長度。Arrays.toString(arr) 打印內容;Arrays.deepToString() 多維數組。Arrays.sort(arr)、binarySearch()、copyOf()、fill()、stream()(Java 8+)。// 引用拷貝(同一對象)
int[] ref = arr;
// 淺拷貝(新數組,元素引用共享)
int[] shallow = arr.clone(); // 或 Arrays.copyOf(arr, arr.length)
// 深拷貝(對象數組需逐元素 clone)
Object[] deep = new Object[arr.length];
for (int i=0; i
數組作參數傳遞的是引用值,方法內修改元素影響原數組;重新賦值參數變量不影響原引用。
Java 無真正多維數組,只有數組的數組:
int[][] matrix = new int[3][4]; // 3 行,每行長度 4
matrix[0] = new int[5]; // 行長度可不一(鋸齒數組)
// 初始化
int[][] data = {{1,2}, {3,4,5}, {6}};
List<T>、Set<T> 替代數組:動態擴容、豐富 API、泛型安全。StringBuilder,單行表達式用 +。split() 慎用於高頻熱路徑,預編譯 Pattern 復用。