JAVA中其实用的是UTF-16编码

本文详细探讨了JAVA在JVM内存中使用UTF-16编码的事实,澄清了Unicode与UTF-16的关系。从源代码编译到运行过程,解释了如何从modified UTF-8转换到UTF-16,并强调了内存中存储的是UTF-16编码的字符,而非Unicode码点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java中即jvm中,内存中的字符类型使用的是utf-16编码。

结论:

 一天看了很多帖子,有人说内存中为了方便所以不用任何的字符编码,直接使用unicode,但其实unicode只是一个字符表,相当于一本密码本,只是一个数字,代表这个字符和编号的对应关系,它在储存中的具体实现是UTF-8,UTF16,UTF-32。就是因为utf-16的编码是65536编号之前的字符都是用的是unicode的二进制,所以很多人会错误的以为unicode是一种编码形式,其实不是这样。java中对于65536编号之后的数字,java采用双字符的结构,这里就不多论述了。
这个是在知乎上引用的图片
java核心卷一的截图

博客链接:这篇文章写的特别好,除了它认为的内存中使用的是unicode,其他我认为都是正确的!


补充: 这一篇博客写的也很好,讲的很清楚

看完这篇博客,我来写一下整个java源代码在编译到运行的过程中使用了哪些编码。
1、首先源码编译的过程中,源码是可以使用任何形式的编码的ÿ

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值