一个字节等于8位;1 byte = 8 bit。
byte:1 byte 8 bit
char:2 byte 16 bit
int:4 byte 32 bit
short:2 byte 16 bit
long:8 byte 64 bit
double:8 byte 64 bit
float:4 byte 32 bit
在java中的中文和英文字母都是采用Unicode编码来表示的,一个Unicode编码为16位,1个字节是8位,所以1个Unicode码占2个字节。
不过英文字母比较特殊,它源自于1字节8位的ASCII码,所以在Unicode编码中只使用了低8位也就是1字节来表示,高8位也可以用来表示,不使用高8位的话也没关系。
String str = “w”;
syso(str.getBytes().length);
得到的是1字节。
汉字完整使用了16位的Unicode编码;
String str2 = “我”;
syso(str2.getBytes().length);
得到的是2字节。(如果是GBK编码;UTF-8:可能是2个,3个或者4个字节;GBK:2个;GB2312:2个)