背景

  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----第一个只出现一次的字符

最新文章

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

热门文章

  1. CodeForces - 961D:Pair Of Lines (几何,问两条直线是否可以覆盖所有点)
  2. tp验证码
  3. Raid信息丢失数据恢复及oracle数据库恢复验证方案
  4. 详解Top命令 输出命令行选项及代码
  5. linux swap交换分区说明/管理
  6. demo2 Kafka+Spark Streaming+Redis实时计算整合实践 foreachRDD输出到redis
  7. 使用spring-boot-starter-amqp开发生产者应用
  8. HTML5的离线应用
  9. iOS按home键后程序的状态变化
  10. vmstat详细说明