Java9 String底层数组的变化

java9之前String底层数组的实现采用的是char数组

在这种方式下,每一个字符都将占用两个字节的空间。

Java9 String底层数组的变化

而在java9之后,String底层采用byte数组和编码标识来识别

Java9 String底层数组的变化 

coder的用法:

  1. 当检测到变量按照latin1或ISO进行标识时,会为其分配一个字节大小的空间;
  2. 当检测到变量按照utf-16进行标识时,会为其分配而两个字节大小的空间。

 同样地,与String相关的StringBuilder,StringBuffer底层都采用了byte[]来实现。