问一个JVM常量池中字符串编码的问题?
如下代码:
public class Test{
private String str="我们"。
}
将Test编译之后形成class文件,那么在class文件中"我们"会以一种CONSTANT_UTF8_info表的形式存在,字节序列如下:
1 0 6 230 136 145 228 187 172 1表示常量表的类型,0 6表示有6个字节的长度。后面6个字节是UTF-8编码的“我们”。
当JVM运行的时候会将这些常量池的信息加载进方法区。也就是说在运行过程中内存存储的"我们"是UTF-8编码的。
我想问一下在Java程序运行时,内存中的字符到底是UTF-16编码的Unicode码,还是UTF-8编码的Unicode码。