内码外码占用字节数不同,要区分对待:
1.java中内码(运行内存)中的char使用UTF16的方式编码,一个char占用两个字节,但是某些字符需要两个char来表示。所以,一个字符会占用2个或4个字节。
2.java中外码中char使用UTF8的方式编码,一个字符占用1~6个字节。
3.UTF16编码中,英文字符占两个字节;绝大多数汉字(尤其是常用汉字)占用两个字节,个别汉字(在后期加入unicode编码的汉字,一般是极少用到的生僻字)占用四个字节。
4.UTF8编码中,英文字符占用一个字节;绝大多数汉字占用三个字节,个别汉字占用四个字节。
统计字符长度需注意,如emoji表情算2个长度的字符,可使用codePointCount方法统计