方法一:String.toCharArray() (最簡潔)
String str = "hahah";
char[] chArray = str.toCharArray(); // 自動建立正確大小陣列並複製內容
// chArray = {'h','a','h','a','h'}
方法二:Scanner 讀取單字符 (互動式)
Scanner sc = new Scanner(System.in);
char[] arr = new char[10];
System.out.println("請輸入 10 個字符:");
for (int i = 0; i < arr.length; i++) {
String input = sc.next(); // 讀取下一個 token (空白分隔)
if (input.length() > 0) arr[i] = input.charAt(0);
else i--; // 空輸入重試
}
方法三:手動指定字符常量
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
char[] custom = new char[] {'H', 'e', 'l', 'l', 'o'};
關鍵區別:char[] vs String
| 特性 | char[] | String |
| 可變性 | 可修改內容 | 不可變 |
| 記憶體 | 連續字符 | 物件頭 + char[] + 快取 |
| API 豐富度 | 低 (需手寫迴圈) | 高 (substring, split, regex...) |
| 安全性 | 敏感資料可手動清零 | 不可變,殘留記憶體風險 |
常見錯誤
// 錯誤:char[] arr = "hello"; // 型別不匹配
// 錯誤:char[] arr = new char[5]; arr = "hello"; // 陣列不可重新指派
// 正確:
char[] arr = "hello".toCharArray();
// 或
char[] arr = new char[5];
"hello".getChars(0, 5, arr, 0);
總結
字符串轉 char[] **首選 toCharArray()**。掃描器讀取單字符用 sc.next().charAt(0)。理解 char[] 可變、String 不可變的本質差異,按需選擇。
- 上一篇文章: C++ 函數返回類型 long 的含義:可改為 int 但需注意截斷風險
- 下一篇文章: JavaScript 獲取瀏覽器城市級地理位置:新浪 IP 接口實現與備選方案
Copyright ©
程式碼之家 All Rights Reserved