java 中一个char包含几个字节

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 中一个char包含几个字节相关的知识,希望对你有一定的参考价值。

背景

??char包含几个字节可能记得在上学的时候书上写的是2个字节,一直没有深究,今天我们来探究一下到底一个char多少个字节?

Char

??char在设计之初的时候被用来存储字符,可是世界上有那么多字符,如果有1个字节,那么就意味着只能存储256中,显然不合适,而如果有两个字节,那么就可以存储65536种。这个数量符合大多数国家的语言字符的个数。于是Java团队默认使用unicode作为编码,一个char作为2个字节来存储。 
??这里就有两个问题了? 
????1. java的char一定会有两个字节吗? 
????2. 中文字符可以存储在char里面吗? 
??先来回答第一个问题。char一定是两个字节吗?不是的,这个跟我们选用的字符编码有关,如果采用”ISO-8859-1”编码,那么一个char只会有一个字节。如果采用”UTF-8”或者“GB2312”、“GBK”等编码格式呢?这几种编码格式采用的是动态长度的,如果是英文字符,大家都是一个字节。如果是中文,”UTF-8”是三个字节,而”GBK”和”GB2312”是两个字节。而对于”unicode”而言,无论如何都是两个字节。 
??然后再回答第二个问题,对于一个char如果用”ISO-8859-1”来存储的话,肯定无法存储一个中文,而对于”UTF-8”、“GB2312”、“GBK”而言大多数中文字符是可以存储的。

总结

??char的长度和是否能存储中文字符是和编码格式有关的。对于我们在编码的时候如果跨平台编码时,应该在编码、解码的时候设置对应的格式,防止由于编解码导致的异常。

 

考点:剑指Offer----第一个只出现一次的字符






以上是关于java 中一个char包含几个字节的主要内容,如果未能解决你的问题,请参考以下文章

Java的char类型包含哪些数据?

char多少字节influxdb

Java中char,short,int,long占几个字节和多少位

Java中的char占用几个字节

java GBK中,是如何将两个字节,组装成一个汉字的

java 读取byte[] 指定字节