总结:
(1)Java采用Unicode编码方式,即2个字节来表示一个字符char。
(2)String是由char组成,但它采用了一种更灵活的方式来存储。即存储英文占1个字节,存储中文占2个字节。
代码如下:
public static void main(String[] args) {
String s1 = "一二三四五";
String s2 = "12345";
System.out.println("s1: len = " + s1.length() + ", bytes = " + s1.getBytes().length);
System.out.println("s2: len = " + s2.length() + ", bytes = " + s2.getBytes().length);
char[] c1 = {'一', '二', '三', '四', '五'};
char[] c2 = {'1', '2', '3', '4', '5'};
System.out.println("c1: len = " + c1.length);
System.out.println("c2: len = " + c2.length);
}
运行结果:
s1: len = 5, bytes = 10
s2: len = 5, bytes = 5
c1: len = 5
c2: len = 5
故可以得出,用char数组存储中文的“一二三四五”与英文的“12345”,长度相等。