java 中一个char包含几个字节
2024-09-27 16:27:32
背景
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----第一个只出现一次的字符
最新文章
- Android JavaMail
- 连锁机构3D指纹考勤系统解决方案
- Win7 64位 VS2013环境cuda_7.5.18的一些坑
- Winform启动隐藏,WebBrowser交互JS
- 【处理手记】Configuration system failed to initialize异常的另类原因
- jquery.cookie中的操作
- JavaScript常用表单验证正则表达式(身份证、电话号码、邮编、日期、IP等)
- java后台正则验证
- LayoutInflater的inflate函数用法
- 支持MySql的数据库自动分表工具DBShardTools发布
- hdu 5151 Sit sit sit
- 重新开始学习javase_对象的摧毁
- 错误记录--更改tomcat端口号方法,Several ports (8005, 8080, 8009)
- CDZSC_2015寒假新人(1)——基础 h
- mysql忘掉密码
- [UWP]实用的Shape指南
- Maven测试篇
- CentOS命令登录MySQL时,报错ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)错误解决方法
- php函数 array_combine
- Loj #2731 「JOISC 2016 Day 1」棋盘游戏