Java⼊门之6:Java中的char类型是怎么存储的以及常见的编
码字符集
⽬录
char 类型:
1. char类型,就是Java中的字符类型,它的书写格式为 单引号引起来的单个字符,⽐如: char ch = '中';  那么这个数据就是Java中的
字符类型
2. char类型是⽤来表⽰Unicode编码表中的字符,Unicode编码被设计⽤来处理各种语⾔的⽂字,符号,char类型占⽤两个字节的⽆符
号数来表⽰Unicode码(HEX),取值范围为 0 ~ 65535,即 ,即 ⼀共可以允许存储65535个字符,或者说可以允许存储0~65535区间的Unicode码,也可以⽤⼗六进制(HEX),⼗进制(DEC),⼋进制(OCT),⼆进制(BIN)的数字来表⽰对应的Unicode码(HEX)和字符!。
3. char类型包括了普通字符和转义字符。
4. Java中常⽤转义字符归纳:
转义字符含义
Unicode
值(⼗六
进制)
⼋进
⼆进制拼接字符串的作⽤举例
\b退格\u000801080b00001000会往前退⼀格,因此离\b左边最近的⼀
个字符会被退格掉
⽐如输出:
"abc\bdef"
结果:
abdef
\n换⾏\u000a012100b00001010会把\n左右两边的字符串分开换⾏输出⽐如输出:"abc\ndef"
结果:
abc
def
\r回车\u000d015130b00001101会回车到字符串的开头,在\r右边还有
字符的时候,相当于退格掉\r左边的所
有字符
⽐如输
出:"abc\rdef"
结果:
def
如果是在GBK的编码下编译执⾏,如果
\t前⾯(左边)有字符,在不是⼋个或
者⼋个的倍数的情况下,出现的空格就
是 8 - 出现的字符的个数,⽐如
abc\tdef,它输出的时候abc和def中
⽐如输出:
"abc\tdef"
结果:
abc    def
\t 制表符
(tab)
\u000901190b00001001
abc\tdef,它输出的时候abc和def中
间就只隔了5个空格字符,如果前⾯刚
好出现了⼋个字符或者⼋的倍数的字符
的情况下,中间就会隔开8个空格,在
GBK的编码下,⼀个\t转义字符相当于
⼀个tab键,⼀个tab键相当于8个空
格。
如果是在UTF-8的编码下编译执⾏,如
果\t前⾯(左边)有字符,在不是四个
或者四个的倍数的情况下,出现的空格
就是 4 - 出现的字符的个数,⽐如
abc\tdef,它输出的时候中间就只隔了
1个空格字符,如果前⾯刚好出现了四
个字符或者四的倍数的字符的情况下,
中间就会隔开4个空格,在UTF-8的编
码下,⼀个\t转义字符也是相当于⼀个
tab键,⼀个tab键相当于4个空格。
abc    def
⽐如输出:
"\tabcdef"
结果:
abcdef
\"双引号\u0022042340b00100010会把 " 作为⼀个字符和字符串中的其他
字符组合成⼀个字符串输出
⽐如输出:
"abc\"def"
结果:
abc"def
\'单引号\u0027047390b00100111会把 ' 作为⼀个字符和字符串中的其他
字符组合成⼀个字符串输出
⽐如输出:
"abc\'def"
结果:
abc'def
\\反斜杠\u005c0134920b01011100会把 \ 作为⼀个字符和字符串中的其他
字符组合成⼀个字符串输出
⽐如输出:
"abc\\def"
结果:
abc\def
\0空字符
(nothing)
\u00000000b00000000
相当于没有添加任何字符,空字符
(nothing)什么字符也没有添加
这个 \0 也可以理解成为char类型的默
认值表⽰ 空字符(nothing)\u0000
⽐如输出:
java语言使用的字符码集是"abc\0def"
结果:
abcdef
\f换页\u000c014120b00001100会把\f原样输出,只不过这个字符打印不出
来,(很少会⽤到 \f 这个转义字符)
⽐如输出:
"abc\fdef"
结果:
\uxxxx 字符的
unicode编码
表中的⼗六进
制表⽰
\uxxxx
对应的
⼋进制
对应的⼆进制
把Unicode字符集中的对应的字符原样输出
\xxx 字符的
ASCII、
IOS8859-1编
\uxxxx
对应的
对应的⼆进制
把ASCII、IOS8859-1码表中的对应的字符
原样输出(基本不会使⽤,最多能表⽰到
\377)
\xxx
IOS8859-1编码表中的⼋进制表⽰
\uxxxx
⼋进制
⼗进制
对应的⼆进制
什么是编码?
百度百科的⼀个概念
编码可以理解为计算机中⼀种机制,计算机所有的数据都是以⼆进制来表⽰存储,运算,传输的,数据当然也包括了⽐如 ⾳乐、视频、图⽚、⽂字等……,它们在传输、存储,运算的时候都会先转成对应的⼆进制数再进⾏相关的操作,这个过程就称之为编码,解码也就是编码的逆过程,把对应的⼆进制数转化成对应的资源数据等……,
⽐如⽂字,在存储,传输,运算的时候转成编码的过程中的时候,就需要制定⼀系列的标准,那么这个编码标准就称之为字符集,或者称之为编码集。
常见的编码字符集:
由权威机构制定的编码表才能被称之为: 字符集
ASCII :
英⽂字符集(American Standard Code for Information Interchange)美国信息交换标准码ASCII码表:
编码⽅式: ⽤⼀个字节的 7 位表⽰
只需记住3个字符的编码就⾏,(其他不常⽤):
1. 新中国成⽴前⼀年 48 => 对应字符 '0'
2. 那年⾹港回归 97 => 对应字符 'a'
3. 两个6减⼀ 65 => 对应字符 'A'
IOS8859-1:
西欧字符集:
向下兼容了ASCII,此字符集⽀持部分于欧洲使⽤的语⾔,包括 阿尔巴尼亚语、巴斯克语、布列塔尼语、加泰罗尼亚语、丹麦语、荷兰语、法罗语、弗⾥西语、加利西亚语、德语、格陵兰语、冰岛语、爱尔兰盖尔语、意⼤利语、拉丁语、卢森堡语、挪威语、葡萄⽛语、⾥托罗曼斯语、苏格兰盖尔语、西班⽛语及瑞典语。包括西欧语⾔,希腊语、泰语、阿拉伯语、希伯来语对应的⽂字符号。欧元符号 出现的⽐较晚,没有被收录在ISO-8859-1当中。
编码⽅式:使⽤⼀个字节的8位表⽰
GB2312:
简体中⽂字符集:
向下兼容了ASCII,这个编码适⽤于汉字处理、汉字通信等系统之间的信息交换,通⾏于中国⼤陆;新加坡等地也采⽤此编码。中国⼤陆⼏乎所有的中⽂系统和国际化的软件都⽀持GB 2312。
编码⽅式:最多使⽤两个字节编码
GBK:
中⽂字符集:
向下兼容了GB2312,GBK编码,是在GB2312-80标准基础上的 内码 扩展规范,使⽤了双字节编码⽅案,其编码范围从8140⾄
FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,⽀持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中⽇韩汉字,并包含了BIG5编码中的所有汉字。GBK编码⽅案于1995年10⽉制定, 1995年12⽉正式发布,中⽂版的WIN95、WIN98、WINDOWS NT以及WINDOWS 2000、WINDOWS XP、WIN 7、WIN10等都⽀持GBK编码⽅案。
编码⽅式:最多使⽤两个字节编码
BIG-5:
繁体中⽂字符集:
向下兼容了ASCII,主要使⽤地区是,中国⾹港,中国澳门……
编码⽅式:最多使⽤两个字节编码
ANSI:
在有些软件中,会出现ANSI编码,⽐如Notepad++,它实际上并不是⼀个真正的编码字符集,当选择了这个所谓的编码集了以后,实际上它就是获取当前系统的编码字符集,⽐如在中⽂版的windows系统,获取的则是GBK编码字符集。
……
Unicode:
统⼀码,也叫万国码、单⼀码(Unicode)是计算机科学领域⾥的⼀项业界标准,包括字符集、编码⽅
案等。Unicode 是为了解决传统的字符编码⽅案的局限⽽产⽣的,它为每种语⾔中的每个字符设定了统⼀并且唯⼀的 ⼆进制 编码,以满⾜跨语⾔、跨平台进⾏⽂本转换、处理的要求。1990年开始研发,1994年正式发布1.0版本,2020年发布13.0版本。Unicode⼏乎包含了⽬前⼈类所有的字符,Unicode字符集只规定每个字符的编码,并没有规定怎么存储字符。
Unicode的3种编码存储⽅案: UTF-8、UTF-16、UTF-32
Unicode字符集-UTF编码
标准Unicode字符集(全):
UTF-8:(编程⼈员使⽤最多的Unicode编码存储⽅案)
UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的⼀种可变长度字符编码。它可以⽤来表⽰Unicode标准中的任何字符,⽽且其编码中的第⼀个字节仍与 ASCII 相容,使得原来处理ASCII字符的软件⽆须或只进⾏少部分修改后,便可继续使⽤。因此,它逐渐成为 电⼦邮件 、 ⽹页 及其他存储或传送⽂字的应⽤中,优先采⽤的编码。
编码⽅式:它是Unicode的具体实现⽅案,标准的UTF-8⽤1到4个字节编码UNICODE字符,修正后的UTF-8⽤1到6个编码UNICODE。UTF-8编码⽅案中,
1. ·⼀个US-ASCIl字符只需1字节编码(Unicode范围由U+0000~U+007F)。
2. ·带有变⾳符号的拉丁⽂、希腊⽂、西⾥尔字母、亚美尼亚语、希伯来⽂、阿拉伯⽂、叙利亚⽂ 等 字母则需要2字节编码(Unicode
范围由U+0080~U+07FF) 。
3. ·其他语⾔的字符(包括中⽇韩⽂字、东南亚⽂字、中东⽂字等)包含了⼤部分常⽤字,使⽤3字节编码。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。