1. 程式人生 > 實用技巧 >java中char的使用注意事項

java中char的使用注意事項

java內部使用unicode字符集

  unicode字符集中的字元超出了2^16個,使用2個位元組(16位)已經不能表示所有的字元了。具體使用幾個位元組表示一個字元與具體的編碼方式有關

  utf8使用1-8個位元組表示一個字元

  utf16使用2個位元組或者4個位元組表示一個字元

  utf32使用4個位元組表示一個字元

java內部使用utf16編碼方式

  當字元的碼點在u+0000 - u+FFFF之間,則使用兩個位元組表示一個字元

  當字元的碼點在u+FFFF-u+10FFFF之間,則使用4個位元組表示一個字元

  utf16編碼方式參照:https://zhuanlan.zhihu.com/p/106379925

java中char型別表示一個程式碼單元(16位),一些輔助字元(4個位元組)則需要兩個2個程式碼單元表示(2個char)。所以在java中字串轉char需要特別注意。

例如以下的問題:

@Test
public void testExtendChar(){

String str = "\uD835\uDD46\uD835\uDD35";

System.out.println("=======");

System.out.println(str);

System.out.println("=======");


for (char c : str.toCharArray()) {
System.out.println(c);
}


System.out.println("=======");


char ch = str.charAt(0);
System.out.println(ch);
}