其实在JDK9中并没有彻底的将String的实现由char[]改为byte[],而是引入了一个compactString的优化,目的是为了减少String对象的内存消耗。
在jdk中char采用的是utf-16的编码规则,这就意味这一个字符需要占用2个字节,此时如果我们的字符串里面都是ASCII编码内的字符,这样的话实际存储占用的空间就会多一倍,所以在JDK9当中,如果字符串里面都是ASCII编码内的字符,会使用byte[]数组来存储,来达到优化的效果,只不过,对与开发者来说是透明的。
其实在JDK9中并没有彻底的将String的实现由char[]改为byte[],而是引入了一个compactString的优化,目的是为了减少String对象的内存消耗。
在jdk中char采用的是utf-16的编码规则,这就意味这一个字符需要占用2个字节,此时如果我们的字符串里面都是ASCII编码内的字符,这样的话实际存储占用的空间就会多一倍,所以在JDK9当中,如果字符串里面都是ASCII编码内的字符,会使用byte[]数组来存储,来达到优化的效果,只不过,对与开发者来说是透明的。