2010-06-02 76 views

回答

2

str.length()会给

bytes.length会给的实际字节数的字符数。

根据您的活动字符集,这可能会也可能不一样。某些字符被编码为多个字节。

例如:

public static void main(String[] args) { 
    String s1 = "test"; 
    byte[] b1 = s1.getBytes(); 
    System.out.println(s1.length()); 
    System.out.println(b1.length); 

    String s2 = "\u0177"; 
    byte[] b2 = s1.getBytes(); 
    System.out.println(s2.length()); 
    System.out.println(b2.length); 

} 

回报

+0

由于Java char是2个字节,而且内存中的编码总是实际上是UCS-2,所以Java字符串总是每个字符消耗2个字节(以及一些内部开销)。 – 2010-06-02 11:38:56

1

目前还不清楚你在问什么。

byte[]消耗的字节的数量仅仅是它的长度:bytes.length 消耗,在存储器中,由Java String的字节数,是每个字符的2字节中,由于在存储器中它被编码为UCS-2: 2*str.length() 当串行化为byte[]时,String消耗的字节数取决于您选择的字符编码。你将不得不序列化并检查。

但是你真的想要做什么?