背景
今天看以前的JAVA视频,发现课件里面写着 JAVA的内部的编码格式是Unicode。
这句话,突然勾起了我的好奇心。
因为的JAVA代码文件都是UTF8编码,怎么跟Unicode扯上关系的呢?
我去问了一下AI,然后整理了一下
Unicode是JAVA编译器的读取class文件使用的编码
假设,我的如下代码是UTF-8编码格式:
public class Dog {
public static void main(String[] args) {
String a = "你好";
System.out.println(a);
}
}
我们要运行上面的代码,执行下面的命令:
#生成Dog.class
javac Dog.java
# 运行
java Dog
当生成Dog.class的时候,实际上就是java编译器使用unicode读取我们源代码内容的时候
java编译器读取源码文件的流程
首先,我们编辑好Dog.java,文件编码是UTF-8,实际上这个编码到目前为止和java毫无关系!
只是相当于我们在我们的操作系统上放了一个文件,这个文件的编码格式 UTF-8编码。
String a = 你好
, 你好
两个字,按照UTF-8的编码,实际上在计算机存的是0xE4 0xBD 0xA0
。
为什么会显示出 你好
这样的图形(我在这里将其称之为图形,便于理解),是操作系统和我们显卡的功劳。 实质上是 0xE4 0xBD 0xA0
这一串16进制数字(这里写成ABCD只是方便表示这一串很长的二进制数,因为我们电脑只认识二进制的0或者1,也就是高低电平)。
java编译器根据文件的编码格式,将这些UTF-8的编码转换成Unicode编码:0x4F60 0x597D
。
这就是java编译器干的活,也是为啥说java内部的编码格式是unicode了。
再通过java Dog
运行,将这些Unicode编码通过操作系统和显卡,又重新变成了汉字:你好
这就是我与大家分享的
标签:编码,JAVA,Dog,编译器,Unicode,java From: https://www.cnblogs.com/88893636-xuyang/p/18317116