背景

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包含几个字节相关推荐

  1. java 中一个char包含几个字节

    背景   char包含几个字节可能记得在上学的时候书上写的是2个字节,一直没有深究,今天我们来探究一下到底一个char多少个字节? Char   char在设计之初的时候被用来存储字符,可是世界上有那 ...

  2. java中的char_java中的char是什么意思?

    java中的char是什么意思? 发布时间:2020-05-15 23:12:27 来源:亿速云 阅读:360 作者:Leah java中的char是什么意思?除了程序员外大部分人都不太了解,今天小编 ...

  3. java怎么定义char_java定义一个char数组

    i++){ System. out .println(arr[i]); } } } 运行结果: 1 2017.02.14 数组课后题 2.将一个字符数组的值 ( neusofteducation)拷贝 ...

  4. java 整型减去字符_Java:从char中减去’0’得到一个整数……为什么这个有效?...

    这工作正常: int foo = bar.charAt(1) - '0'; 但这不是-因为bar.charAt(x)返回一个char: int foo = bar.charAt(1); 似乎从char ...

  5. java怎么统计随机数出现次数,Excel统计出现次数、个数的VBA代码 java中怎么判断一个字符串中包含某个字符或字...

    延伸:java中怎么判断一个字符串中包含某个字符或字符 描述:...一个字符串中包含某个字符的单词说出现的次数 c#什么方法可以判断字符串中包含某个字符的个数? JAVA判断字符串数组中是否包含某字符 ...

  6. java中怎么表示数组中的某个值_简易Java(12):如何高效检查一个数组中是否包含某个值?...

    如何检查一个数组(未排序)中是否包含某个特定的值?在Java中,这是一个非常有用并又很常用的操作.同时,在StackOverflow中,有时一个得票非常高的问题.在得票比较高的几个回答中,时间复杂度差 ...

  7. Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积。 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法。

    Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积. 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法, ...

  8. java 检测表情符号_hutool工具包:判断一个字符串中是否包含emoji表情符号(emoji-java)...

    需求: 判断一个字符串中是否包含emoji表情符号. 工具: hutool工具包,emoji-java工具包 cn.hutool hutool-all 5.3.7 com.vdurmont emoji ...

  9. Java 如何判断一个字符串中是否包含某一 子字符串

    对于以上问题的解决,我一般使用String.indexOf("子串")的方式解决,  请看代码: public class IndexOfTest {public static v ...

最新文章

  1. Java中vector的用法
  2. 为什么非阻塞io性能更好_提高性能:流的非阻塞处理
  3. IntelliJ IDEA for Mac 在eclipse(MacOS)模式下的快捷键
  4. java 加密解密编程,java 加密解密容易实现
  5. “康园圈--互联网+校园平台“项目之成果展示及项目总结
  6. docker挂载文件躺过的坑
  7. haddler处理队列 netty_Netty的任务队列的Task的三种使用场景
  8. android 8.1没声音,RingtonePreference无法在Android 8.1上添加新的铃声
  9. Android eclipse中程序调试
  10. JAVA环境变量配置步骤及测试(JDK的下载、安装和环境配置教程)
  11. java丢硬币boolean_抛硬币模拟器
  12. 什么是计算机文化它与计算机技术有何区别,什么叫计算机文化?
  13. 龙芯3U板卡学习资料第706篇: GEC-2K1000 龙芯3U板卡
  14. 新手学习嵌入式开发要学什么
  15. 乡村振兴公益基金启动暨古茶树非遗保护公益行发布
  16. 华为android系统是什么意思,华为HarmonyOS与安卓系统有什么区别?一文了解
  17. JS中数组使用的方法
  18. Eclipse Maven Web工程报错:java.lang.ClassNotFoundException: ContextLoaderListener
  19. 流量精灵刷流量的实例教程
  20. 天梯赛2022年比赛试题,进阶题L2,登顶题L3试题(仅题目)基础题L1有代码,请看本专栏另一篇

热门文章

  1. linuxftp文件服务器,linux ftp文件服务器
  2. php框架加滑动条,IOS_iOS实现双向滑动条效果,最近做项目,碰到一种双向滑 - phpStudy...
  3. 计算机专业术语的通俗解释,计算机专业术语解释
  4. 华为畅享20不能升级鸿蒙,华为mate20可以升级鸿蒙os吗-mate20能不能更新鸿蒙系统...
  5. 苏宁大数据怎么运营_18个“硬核”数据告诉你,苏宁大数据如何火力全开护航618!...
  6. html与js二级菜单横排,JavaScript实现横向滑出的多级菜单效果
  7. linux基础命令怎么记,linux基础命令--笔记(示例代码)
  8. 川大计算机专业导师冯子亮,问问川大计算机研究生招收的小专业有哪些
  9. 极简风海报作品合集|过目不忘的海报大片,越看越过瘾
  10. 高端轻奢国风美妆海报模板,东方美到极致