在JAVA中,CHAR都是以UTF-18方式存储。什么是UTF-18编码,从以下百度可知:
UTF-16是Unicode的其中一个使用方式。 UTF是 Unicode TransferFormat,即把Unicode转做某种格式的意思。在Unicode基本多文种平面定义的字符(无论是拉丁字母、汉字或其他文字或符号),一律使用2字节储存。而在辅助平面定义的字符,会以代理对(surrogate pair)的形式,以两个2字节的值来储存。UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节 (2字节) 储存,但UTF-16却无法兼容于ASCII编码。
那么为什么"AAA".getBytes()返回的是长度为3字节的数组,而不是6.
1、“AAA”为String类型,而String类型并不是简单由Char类型拼凑成的。
2、 "AAA".getBytes()按照项目默认GBK编码返回的就是长度为3字节的数组,所以长度为3。