【JAVA】char类型到底占几个字节?

char占几个字节取决于使用的是什么字符集,用什么编码方式,但不管怎样英文都是只占一个字节。下面就先说一说常用的字符集

一、字符集
1.1、ASCII字符集

ascii字符集中只有英文,没有中文,只占一个字节。参照ascii表可知。

存储规则:前面补0,补齐8位

1.2、GBK字符集

英文字符用一个字节存储,中文用两个字节存储。注意的是,存储汉字的时候,高字节二进制一定是以1开头的,转换为十进制一定是负数。英文是以0开头的,转换十进制是整数。因此在读取文件时,读到以1开头的字节时,就知道要连续都两个字节,这样就不会出现乱码。

GBK编码存储规则:不需要什么变动,直接把汉字对应的编码值转换为二进制,然后存进计算机内存中。注意计算机是以补码的形式进行存储的。所以再把11010110、11010000转为十进制之前,需要先求原码。补码的补码就是原码。

以11010110为例,先把补码看成源码求反码,负数求反码符号位不变,其余的按位取反,即为10101001,负数求补码 反码+1,即为10101010,转换为十进制为-42。

1.3、Unicode字符集

UTF-N编码规则:

Unicode Transfer Format

UTF-16编码规则:用2~4个字节保存

UTF-32编码规则:固定使用4个字节保存

UTF-8编码规则:用有1~4个字节保存

utf-8中,中文占三个字节,编码规则如下

二、代码
char[] c = {'a','中'};
String str1 = new String(c);

System.out.println(Arrays.toString(str1.getBytes("GBK")));//[97, -42, -48]
System.out.println(Arrays.toString(str1.getBytes("UTF-8")));//[97, -28, -72, -83]
System.out.println(str1.getBytes("GBK").length);//3
System.out.println(str1.getBytes("UTF-8").length);//4

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值