char几个字节java_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
char几个字节java_Java中char占用几个字节相关推荐
- int 几个字节 java_Java中char,short,int,long占几个字节和多少位
1.字节:byte:用来计量存储容量的一种计量单位:位:bit 2.一个字节等于8位 1byte = 8bit char占用的是2个字节 16位,所以一个char类型的可以存储一个汉字. 整型: b ...
- char几个字节java_java中char占几个字节?
java中char占几个字节? java中的一个char占用2个字节.java采用unicode,2个字节来表示一个字符. 一个数字或英文或汉字都是一个字符,只不过数字和英文时,存储的2个字节的第一个 ...
- java中char是几个字节_Java中char占用几个字节
在讨论这个问题之前,我们需要先区分unicode和UTF. unicode :统一的字符编号,仅仅提供字符与编号间映射.符号数量在不断增加,已超百万.详细:[https://zh.wikipedia. ...
- mysql中char是什么意思_mysql中char与varchar的区别
在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库的数据库类型,一般参考的都是char或者varchar,这两种选择有时候让人很纠结,今天想总结一下它们两者的区别,明确一下选择塔 ...
- char几个字节java_java中的char占几个字节实例分析
java中的char占几个字节实例分析 1:"字节"是byte,"位"是bit : 2: 1 byte = 8 bit : char 在Java中是2个字节.j ...
- JAVA中char占用多少字节_Java中char占用几个字节
https://www.cnblogs.com/louiswong/p/6062417.html https://www.cnblogs.com/fnlingnzb-learner/p/7272348 ...
- char型变量声明java_java中变量的声明和变量的类型
1.变量的概念: 内存中的一个存储区域该区域有自己的名称(变量名)和类型(数据类型)Java中每个变量必须先声明,后使用该区域的数据可以在同一类型范围内不断变化 使用变量注意: 变量的作用域:一对{ ...
- python中char是什么意思_MySQL中char和varchar的区别是什么
MySQL中char和varchar的区别是什么 区别一.定长和变长的区别 1.char 表示定长,长度固定: 2.varchar表示变长,即长度可变. 当所插入的字符串超出它们的长度时,视情况来处理 ...
- python里char什么意思_编程中“char”是什么意思?
展开全部 其为定义字符型变量. char用于C或C++中定义字符型变量,只占一636f707962616964757a686964616f31333433623137个字节,取值范围为 -128 ~ ...
最新文章
- 从今天开始,我就要潜心研究软件开发技术了,不在被名利所困
- 系统linux/redhat6.5 zabbix 2.47监控nginx1.8.0 (下)
- ubuntu12.04没有输入法。。
- 操作系统储存管理功能
- 高速电路EDA设计第一次实验
- mix2s android p内测,历时一个月,MIX2S成小米首款Android P公测机型
- ZOJ 3702 Gibonacci number(数学推导题)
- 高朋F团QQ团 三品牌合力激战团购市场
- Win32ASM学习[6]: PTR、OFFSET、ADDR、THIS
- 操作系统之文件管理:7、文件的系统层次
- python 调用gpu算力_数据科学家需要算力,GPU 如何实现?-控制器/处理器-与非网...
- 18. PHP 表单验证
- SQLite的查询优化
- JS每晚24:00更新某方法
- 2015境外人气餐厅榜单!你吃过几家?
- .playground文件_部署可教学机器:Circuit Playground Express,Arduino,P5.js,TinyUSB
- 微信中的黑科技你知道吗?
- 重回华语乐坛神仙打架的时代——飞利浦S302圈铁耳机评测
- FLUENT提供了9个湍流模型,教你如何选择
- 【MYSQL】ERROR 1366 (HY000)