我们知道java中的char编码方式为unicode,来看看下面的代码
public class Try {
public static void main(String[] args) {
// TODO code application logic here
String x="我";
byte[] a=x.getBytes();
System.out.println(a.length);
}
}
输出结果非常神奇,是3,我们知道String是final修饰的char数组,char的编码不是unicode吗?为什么变成3个字节了?
在我们的编译平台上,我发现该文件的编码方式是UTF-8,这就说通了,getBytes()用的是文件的编码方式。
java文件运行的过程为:
1、根据文件的编码方式,将该文件转换为以UTF-8编码的.java文件。
2、将.java文件转换成二进制文件.class文件。
3、JVM装载类后运行。
4、运行时若要输出字符,则将该字符由unicode编码转换成平台的编码。
所以,平常所说的char是unicode编码,其实是说char在JVM中是unicode编码的。