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 ~ ...
最新文章
- 13---Net基础加强
- 【负载均衡】揭开F5 BIG-IP的神秘面纱(一)
- 星外主机管理系统可以装到内网_智慧消防管理系统_消防物联网远程管理平台...
- MyBatis-Plus Day2 Wapper 核心功能 条件构造器 测试
- c# uri.host_C#| Uri.GetLeftPart()方法与示例
- 蓝桥杯 算法训练(四)结点选择(树形动态规划)
- 如何设置EditPlus保存时不生成bak文件
- tensor.view(*shape) 函数
- oracle gENT,Oracle 11g r2 新建空表不分配semgent
- VC2005字符集设置容易出错的问题!
- 草图大师SketchUp2018下载和安装教程
- Android 7.1 PackageInstaller(应用安装器)增加自动点击安装
- uniapp微信小程序订阅消息发送服务通知--超详细
- html特殊符号的表示
- Windows7下chm文件打不开
- Kinect使用系列
- android系统佳明app,佳明garmin运动手表app
- 【直击DTCC】浪潮霍俊路详解数据库集群锁机制管理
- mysql show-warnings_MySQL-show warnings
- 电脑防火墙未使用推荐的设置来保护计算机,防火墙无法使用推荐设置,