1、汉字所占的字节数
ASCII码:
英文字母(不分大小写)占一个字节
中文汉字占两个字节
二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就是一个字节。
UTF-8编码:
英文字符等于一个字节
中文(含繁体)三个字节
Unicode编码:
英文两个字节
中文(含繁体)两个字节
2、测试
public static void main(String[] args) { char c1='早'; System.out.println(c1); char c2='z'; System.out.println(c2); }
早
z
char类型可以存储一个中文汉字,因为Java中使用的编码是Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号),一个char类型占2个字节(16bit),所以可以放一个中文
一个char类型的变量在存放两个或三个汉字的时候就会报错
3、编码转换
使用Unicode意味着字符在JVM内部和外部有不同的表现形式,在JVM内部都是Unicode,当这个字符被从JVM内部转移到外部时(例如存入文件系统中),需要进行编码转换。所以Java中有字节流和字符流,以及在字符流和字节流之间进行转换的转换流,如InputStreamReader和OutputStreamReader,这两个类是字节流和字符流之间的适配器类,承担了编码转换的任务