• Java基本类型占用的字节数:
    1字节: byte , boolean
    2字节: short , char
    4字节: int , float
    8字节: long , double
    注:1字节(byte)=8位(bits)
  • 计算机编码方式与规则
  1. Ascii编码一个字节表示一个字符,共127个字符。随着发展,又扩展了127号之后的字符编码:“扩展字符集”。

java字符集 java字符集有多少字符_字符编码

  1. DBCS - Double Byte Charecter Set 双字节字符集 (GB2312 -> GBK -> GB18030)中文编码
    舍弃ASCII 127号之后的编码字符,进行增加一个字节扩展字符编码,两个字节表示一个中文字符。
    GB2312共收录6763个简体汉字,是一般输入法的默认编码 ;
    GBK共收录21004个汉字(包括简体和繁体),是字库庞大的输入法的首选编码;
    GB18030 分别以单字节、双字节和四字节进行编码。兼容了GBK和GB2312。当然也支持繁体中文;
  2. Unicode
    通常是2个字节表示一个字符。在用法上,都是用两个字节表示一个字符。
    但是与DBCS不同的是,Unicode为 ISO (国际标谁化组织)标准编码。(^.^)
    由于英文字符用两个字节表示,太浪费空间了,所以衍生了可变长编码Utf-8,也是Unicode的实现的一种标准

字符

ASCII

Unicode

UTF-8

A

01000001

00000000 01000001

01000001

-

01001110 00101101

11100100 10111000 10101101


  1. UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,
    汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。
  • 代码单元与代码点代码点:编码表(比如Unicode)中某个字符的代码值(数字);
    代码单元:编码表字符的最小存储单元,不同的编码,代码单元的大小也是不一样的。
    一个字符,仅仅对应一个代码点,但却可能有多个代码单元。
    在Java中,char类型用UTF-16编码描述一个代码单元。使用代码单元而非字符,与Unicode字符集的增补相关。
    String的length方法得到的是UTF-16编码对应的代码单元数量,而非字符个数;
    charAt方法得到的是指定位置的代码单元,而非字符。
    获取字符个数需要调用codePointCount方法,获取单个字符需要调用codePointAt方法。