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);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM