public class Test { public static void main(String args[]) { String s = "祝你考出好成绩!"; System.out.println(s.length()); } }
在JDK9之前
String底层使用的是CharArray来存储的,Java中一个char占用2Byte。
在JDK9以后
String底层改用了ByteArray来做底层存储,每个元素只占一Byte,就避免了在常规字符存储上的空间浪费。
问题:如何计算字符串长度?
在新的String底层,使用了latin和utf16两个编码器来区分拉丁字符与非拉丁字符(比如汉字)。
public int length() { return value.length; }这里的value又是一个char类型的数组
private final char value[];所以,length() 方法返回的就是这个 char 类型数组的长度