java中的getBytes()问题

我们知道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编码的。

你可能感兴趣的:(java语言疑惑解答)