String str="你好";
System.out.println(str.length());
一个个汉字占两个字符,可为什么上面输出的结果是二,而不是所预测的4?   请指点!

解决方案 »

  1.   

    java采用Unicode编码,所以Java简单类型char是双字节的
      

  2.   

    length 是计算字符的个数而一个汉字占用的是两个字节(也有可能是3个或者4个字节,依编码而定)
    按照你的意思应该这样写byte[] b=str.getBytes("ISO-8859-1");System.out.println(b.length);
      

  3.   

    为啥会是 4 呢,在原来的 DOS 程序下,结果是 4,DOS 中的汉字处理方式与 Java 中不一样。
      

  4.   

    汉字这个问题在java里面情况很复杂。
      

  5.   

    汉字就是头疼
    首先.length()得到的是字符数而不是字节数,java里用的是Unicode编码一个汉字字符虽然是占两个字节,但是它是一个字符
      

  6.   

    楼主,给你一段代码看看吧。
    public class Temp {
    public static void main(String[] args) {
    String str = "你好";
    System.out.println(str.length());
    System.out.println(str.getBytes().length);
    str = "你好a";
    System.out.println(str.length());
    System.out.println(str.getBytes().length);
    }
    }
    结果为:
    2
    4
    3
    5Java里的String的length()返回的是String里字符的个数,而不是字节个数,汉字是两个字节的。
    String.getBytes().length才是真正的字节数。