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 阅读(694) 评论(0) 编辑 收藏 举报