在String类中,有这么一个方法:

public byte[] getBytes():该方法将字符串按照默认编码格式转为byte数组,对于简体中文win系统来说,默认编码格式就是GBK。

package com.anjoyo.day01;import java.io.UnsupportedEncodingException;public class StringTest {    public static void main(String[] args) {        String strSrc = "这是string";        System.out.println(strSrc.getBytes().length);        try {            System.out.println(strSrc.getBytes("GBK").length);        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }    }}

两者输出结果一样:10。

从中我们还可以看出,对于第二种getBytes的重载方法,我们可以指定编码格式,从而得到该编码格式的字节形式。

package com.anjoyo.day01;import java.io.UnsupportedEncodingException;public class StringTest {    public static void main(String[] args) {        String strSrc = "这是string";        System.out.println(strSrc.getBytes().length);// 10        try {            System.out.println(strSrc.getBytes("UTF-8").length);// 12        } catch (UnsupportedEncodingException e) {            e.printStackTrace();        }    }}

可以看出:对于GBK编码,汉字占2个字节,对于UTF-8来说,汉字占3个字节。这和我们的常识是一致的。