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

 

posted on 2021-01-19 11:51  DamonBlogs  阅读(678)  评论(0编辑  收藏  举报

导航