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