代码之家  ›  专栏  ›  技术社区  ›  George

javax.activation.datasource大小问题

  •  0
  • George  · 技术社区  · 14 年前

    我如何获得物理内存量,被 DataSource (特别是 ByteArrayDataSource )?我用 javax.mail.util.ByteArrayDataSource (byte[] bytes, String type) 建设者,我在哪里得到的 bytes 这样地:

    String str = "test";
    byte[] bytes = str.getBytes();
    

    那会是 str.length() 以字节为单位?还有其他想法吗?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Peter Tillemans    14 年前

    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);
    
    }
    

    收益率

    四 四 一 四

        2
  •  1
  •   Sean Owen    14 年前

    不清楚你在问什么。

    用户使用的字节数 byte[] 只是它的长度: bytes.length 用Java在内存中消耗的字节数 String ,是每个字符2个字节,因为在内存中它被编码为ucs-2: 2*str.length() 用户使用的字节数 ,当序列化为 字节[] ,取决于您选择的字符编码。您必须将其序列化并进行检查。

    但你到底想做什么?