public class test{
public static void main(String[] args)
{
String str1 = "eeeee";
String str2 = "斯蒂芬记的";
System.out.println(str1.getBytes().length);
System.out.println(str2.getBytes().length);
}}为啥第一个println 会输出5呢 不是说一个字符占两个字节么? 谢谢回答!

解决方案 »

  1.   

    一个字节是8位二进制。Java中的字符是unicode码,占2个字节,即16位。 。 baidu到的信息。。
      

  2.   

    楼上是正确的
    java不管什么,都是按字算得
    所以eeeee 和 斯蒂芬记的
    是一样的
      

  3.   

    对 , java 是UTF的 所以自然都是5个
      

  4.   

    getBytes
    public byte[] getBytes()    使用      **平台默认的字符集**
    将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。
    ------------------------------------
    JDOC告诉我们,你们看到的 长度不是unicode码,而是  **平台默认的字符集**所以,我使用linux+UTF8运行你的程序的出来的结果会是 5 15
    而你用windows+gb2312的结果则是5 10
      

  5.   

    String str1 = "eeeee";
    String str2 = "斯蒂芬记的";
    System.out.println(str1.getBytes().length+" " +str1.length());
    System.out.println(str2.getBytes().length+" " +str2.length());
    5 5
    10 5