Java中的一个汉字占几个字节

参考答案

不同的编码格式占字节数是不同的,UTF-8编码下一个中文所占字节也是不确定的,可能是2个、3个、4个字节。

实例:

String s = "情系IT";

try {
byte[] bytes1 = s.getBytes("gbk");

for (byte b : bytes1) {
System.out.print(Integer.toHexString(b & 0xff)+" ");

}

System.out.println();

byte[] bytes2 = s.getBytes("utf-8");

for (byte b : bytes2) {
System.out.print(Integer.toHexString(b & 0xff)+" ");

}

} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block

e.printStackTrace();

}

结果:

Java中的一个汉字占几个字节

可以看出:

  • 字符串是utf-8编码,一个汉字三个字节,一个字母一个字节。
  • 字符串是gbk编码时,一个汉字两个字节,一个字母一个字节。
  • 如果想看其他编码下的情况,可复制上面的代码,将字符串进行其他编码查看即可。

注意:

如果字符串不进行编码,则默认为项目的编码。

剖析:

  • Integer.toHexString(int a)是Java API提供的一个方法,目的是返回整数参数的字符串表示形式,作为16位中的无符号整数。
  • 使用Integer.toHexString(int a),原因为需要的是一个int类型的参数,0xff代表的就是16进制的11111111。
  • byte是1个字节,int是4个字节,也就是要将8位转换为32位。如果无符号位的话,直接补0即可。因此&0xff就是为了保证符号位。

举个例子:

-127转为二进制为11111111,取反求补则为10000001,转十六进制则为81,继续转成十进制,看成无符号数就会发现变成了129。

以上,是Java面试题【Java中的一个汉字占几个字节】的参考答案。

 

输出,是最好的学习方法

立即行动,在评论区记录下你的问题、笔记或补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧