java中char是几个字节_Java中char占用几个字节
在讨论这个问题之前,我们需要先区分unicode和UTF。
unicode :统一的字符编号,仅仅提供字符与编号间映射。符号数量在不断增加,已超百万。详细:[https://zh.wikipedia.org/zh-cn/Unicode]
UTF :unicode转换格式 (unicode transformation format) 。定义unicode中编号的编码方式。utf8和utf16便是其中两种实现方式。其中utf8为变长表示,长度可能时1~6个字节;utf16为变长表示,长度可能是2或4个字节。详细:UTF8 [https://zh.wikipedia.org/zh-cn/UTF-8] UTF16 [https://zh.wikipedia.org/zh-cn/UTF-16]
接着,要分清内码(internal encoding)和外码(external encoding)。
内码 :某种语言运行时,其char和string在内存中的编码方式。
外码 :除了内码,皆是外码。
要注意的是,源代码编译产生的目标代码文件(可执行文件或class文件)中的编码方式属于外码。
先看一下内码
JVM中内码采用UTF16。早期,UTF16采用固定长度2字节的方式编码,两个字节可以表示65536种符号(其实真正能表示要比这个少),足以表示当时unicode中所有字符。但是随着unicode中字符的增加,2个字节无法表示所有的字符,UTF16采用了2字节或4字节的方式来完成编码。Java为应对这种情况,考虑到向前兼容的要求,Java用一对char来表示那些需要4字节的字符。所以,java中的char是占用两个字节,只不过有些字符需要两个char来表示。
详细:
[https://docs.oracle.com/javase/tutorial/i18n/text/unicode.html]
[http://www.zhihu.com/question/27562173]
外码
Java的class文件采用UTF8来存储字符,也就是说,class中字符占1~6个字节。
Java序列化时,字符也采用UTF8编码,占1~6个字符。
总结:
java中内码(运行内存)中的char使用UTF16的方式编码,一个char占用两个字节,但是某些字符需要两个char来表示。所以,一个字符会占用2个或4个字节。
java中外码中char使用UTF8的方式编码,一个字符占用1~6个字节。
UTF16编码中,英文字符占两个字节;绝大多数汉字(尤其是常用汉字)占用两个字节,个别汉字(在后期加入unicode编码的汉字,一般是极少用到的生僻字)占用四个字节。
UTF8编码中,英文字符占用一个字节;绝大多数汉字占用三个字节,个别汉字占用四个字节。
EOF
java中char是几个字节_Java中char占用几个字节相关推荐
- 使用randomaccessfile类将一个文本文件中的内容逆序输出_Java 中比较常用的知识点:I/O 总结...
Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. 数据流是一串连续不断的数据的集合,就象水 ...
- JAVA中char占用多少字节_Java中char占用几个字节
https://www.cnblogs.com/louiswong/p/6062417.html https://www.cnblogs.com/fnlingnzb-learner/p/7272348 ...
- java中字节_java中的变量各占得字节数
展开全部 1.boolen,8位,占1个字节 2.int,32位,占4个字节 3.float,32位, 占4个字节 4.double,64位,占8个字节 5.char 16位,占2个字节 6.byte ...
- java中double类型占几个字节_java中各种数据类型占用字节数
1字节(Byte)=8bit java的基本类型 类型 所占字节 byte 1 short 2 int 4 long 8 float 4 double 8 char 2 String中字母和汉字所占字 ...
- java 汉字 字节_java中的汉字占几个字节
java中的汉字占几个字节 发布时间:2020-06-25 20:02:07 来源:亿速云 阅读:217 作者:Leah 今天就跟大家聊聊有关java中的汉字占几个字节,可能很多人都不太了解,为了让大 ...
- java boolean几个字节_Java中boolean类型到底占用多少个字节?
1.时间:2017-07-03 07:37:06YuanMxy 2.问题描述:今天在复习java基础的时候发现一小问题,Java中boolean类型到底占用多少个字节? 3.问题解答: (1)什么是b ...
- java 压缩汉字字节_java中计算汉字的字节数
中文并不一定是占两个字节的,具体占多少字节是跟具体的编码方式相关的. 比如说:GB2312.GBK.GB18030 编码是占用两个字节的,但是 UTF-8 编码的话至少需要占用三个字节. 有一个简单方 ...
- java字符串字节_Java中字符串与byte数组之间的相互转换
前言 Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成byte数组型,java在字符与数组转换也是非常方便的.下面跟我一起来了解一下字符串与byte之间转换的原理 ...
- Java把以0结尾的字符串_Java中字符串为什么不以\0结尾
其实这个问题没有什么好说的,Java里面一切都是对象,是对象的话,字符串肯定就有长度,即然有长度,编译器就可以确定要输出的字符个数,当然也就没有必要去浪费那1字节的空间用以标明字符串的结束了. 学过C ...
最新文章
- php的反射作用是什么意思,php反射的作用是什么
- NLP为RPA带来了什么价值?
- 大富翁已成过去-我的一些感想
- c#调用c++的dll接口
- java获取手机安装app_Android之——获取手机安装的应用程序
- 解决ssh登录慢的问题
- 服务器托管用户支招选择IDC经验
- PackageManagerService源码阅读笔记
- YOLOV5网络结构
- linux使用光盘镜像(ISO)作为软件源安装软件
- Android多窗口模式(分屏模式)
- Cesi运行报错AttributeError: can‘t set attribute
- Unity VFX粒子系统入门笔记-2-制作简易火焰特效
- 移动拨号上网开热点(不是360开热点,而是使用电脑自带的热点功能)详解
- MySQL数据库灵魂拷问
- Andrew Ng机器学习课程笔记--week9(下)(推荐系统协同过滤)
- 串的定长顺序存储结构|C++实现
- 神经性脚臭案例整理(五)
- 谈谈技术债务的定义,影响以及管理
- 八进制、十进制、操作符(day04)