在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个字节。这和我们的常识是一致的。