最新消息: 新版网站上线了!!!

java char[] 和 String 类型占用字节大小比较

在 Java 语言中

1、String s = "China"; 占多少字节?


答:占 5 个字节。


System.out.println(Charset.defaultCharset());//获取ide默认编码类型

String s = new String("China".getBytes());

byte[] b = s.getBytes();

System.out.println("" + b.length);

 以上代码,可以输出 "China" 所占的字节长度为 5


2、String s = "中国"; 占多少字节?


答:如果是 汉字 的情况需要考虑编码。


(1)GBK 编码(ide默认)时,每一个汉字占用 2 个字节,那么中国占 4 个字节。


(2)UTF-8 编码时,每一个汉字占用 3 个字节,那么中国占用 6 个字节。


3、转码问题,GBK 转 UTF-8 时,字节占用会变大吗?反过来呢?


//获取的是 UTF-8编码

System.out.println(Charset.defaultCharset());

String s;

try {

        s = new String("中国".getBytes(),"GBK");

        byte[] b = s.getBytes();

        System.out.println("" + b.length);

    } catch (UnsupportedEncodingException e) {

        e.printStackTrace();

}

如上代码是:UTF-8 转 GBK 编码格式,s 长度从 6 字节变为 9 字节。

s 内容变化:中国 —> 涓浗

因为当前编码是 UTF-8,转码之后变成了 3 个文字,占用 9 个字节。然而,反过来的情况是这样的:


中国 (gbk) —> ?й? (utf-8)

s 长度从 4字节 变成了 4字节,虽然长度没发生改变,但是文字已经改变。这里的 ? 占用 1 个字节。


转载请注明:谷谷点程序 » java char[] 和 String 类型占用字节大小比较