System.out.println("啊(Unicode)   :" + "啊".getBytes("Unicode").length);  
System.out.println("啊啊(Unicode) :" + "啊啊".getBytes("Unicode").length);
System.out.println("啊啊啊(Unicode) :" + "啊啊啊".getBytes("Unicode").length);
System.out.println("啊啊啊啊(Unicode) :" + "啊啊啊啊".getBytes("Unicode").length);啊(Unicode)   :4
啊啊(Unicode) :6
啊啊啊(Unicode) :8
啊啊啊啊(Unicode) :10

解决方案 »

  1.   

    这个没有什么规律,这是由sun的类库实现。
      

  2.   

    支持!!!System.out.println("啊(Unicode)   :" + "啊".getBytes("Unicode").length + Arrays.toString("啊".getBytes("Unicode")));  
    System.out.println("啊啊(Unicode) :" + "啊啊".getBytes("Unicode").length + Arrays.toString("啊啊".getBytes("Unicode")));
    System.out.println("啊啊啊(Unicode) :" + "啊啊啊".getBytes("Unicode").length + Arrays.toString("啊啊啊".getBytes("Unicode")));
    System.out.println("啊啊啊啊(Unicode) :" + "啊啊啊啊".getBytes("Unicode").length + Arrays.toString("啊啊啊啊".getBytes("Unicode")));啊(Unicode)   :4[-2, -1, 85, 74]
    啊啊(Unicode) :6[-2, -1, 85, 74, 85, 74]
    啊啊啊(Unicode) :8[-2, -1, 85, 74, 85, 74, 85, 74]
    啊啊啊啊(Unicode) :10[-2, -1, 85, 74, 85, 74, 85, 74, 85, 74]
      

  3.   

    Java 内部字符串使用的是 UTF-16,前面 2 个字节表示字节序大端或者小端,用 2 进制可以看到