首页 > 编程语言 >如何理解JAVA的编码格式是Unicode

如何理解JAVA的编码格式是Unicode

时间:2024-07-22 22:32:12浏览次数:9  
标签:编码 JAVA Dog 编译器 Unicode java

背景

今天看以前的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

相关文章

  • java-cglib动态代理原理
    cglib使用1.引入依赖<!--添加cglib依赖--><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.3.0</version>&......
  • java编程 2
    1,比较运算符,比g和103是否相等???代码:publicclassbj{   publicstaticvoidmain(String[]args){       charq='g';       intw=103;       if(q==103){   System.out.println("g和103是相等的");       }else{......
  • Java编程 3
    1.轿车平均加速度   =速度的变化量/时间的变化量   轿车用了8.7秒从0千米加速到每小时100千米代码:publicclassvp{   publicstaticvoidmain(String[]args){   ints0=0;//定义变量值   ints1=(int)100.11;//浮点型强制转化成整型  ......
  • 使用Java和Flyway进行数据库版本控制
    使用Java和Flyway进行数据库版本控制大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们来深入探讨如何使用Java和Flyway进行数据库版本控制。一、Flyway简介Flyway是一个数据库迁移工具,它能够帮助开发者管理数据库版本,自动应用数据库迁移脚本,确保......
  • Java中的元编程与动态代理技术
    Java中的元编程与动态代理技术大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将探讨Java中的元编程与动态代理技术。这些技术使得Java开发者能够在运行时动态地生成、修改代码或行为,增强了代码的灵活性和扩展性。一、元编程概述元编程(Metaprogr......
  • 使用Java和Spring Retry实现重试机制
    使用Java和SpringRetry实现重试机制大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将探讨如何在Java中使用SpringRetry来实现重试机制。重试机制在处理临时性故障和提高系统稳定性方面非常有用。一、SpringRetry简介SpringRetry是Spring框......
  • Java中的虚拟线程与并发编程优化
    Java中的虚拟线程与并发编程优化大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中的虚拟线程及其对并发编程的优化。虚拟线程是Java21引入的一个新特性,它可以显著提高应用的并发性能,并简化线程的管理。我们将介绍虚拟线程的基本概......
  • 使用Java和Reactive Streams构建流式应用
    使用Java和ReactiveStreams构建流式应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入探讨如何使用Java和ReactiveStreams构建流式应用。流式应用能够高效处理异步数据流,尤其适合处理大量数据和实时数据的场景。ReactiveStreams是一个......
  • 使用Java和Spring WebFlux构建响应式微服务
    使用Java和SpringWebFlux构建响应式微服务大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何使用Java和SpringWebFlux构建响应式微服务。SpringWebFlux是Spring框架的一部分,专为创建响应式应用程序而设计。在这篇文章中,我们将介绍如何......
  • 超热门!身份证实名认证接口Java调用示例
    一、什么是身份证实名认证?输入姓名、身份证号,校验此两项是否匹配,同时返回生日、性别、籍贯等信息。二、身份证实名认证接口适用哪些场景呢?金融领域、电商与支付、社交与通讯、交通与出行、在线教育与培训等。三、如何用Java快速调用该接口呢?以下以阿里云为例:接口地址:身份......