1

DataSource(特に — )によって消費される物理メモリの量を取得するにはどうすればよいByteArrayDataSourceですか? javax.mail.util.ByteArrayDataSource (byte[] bytes, String type)コンストラクターを使用すると、次bytesのようになります。

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

それstr.length()はバイト単位でしょうか?他のアイデアはありますか?

4

2 に答える 2

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

}

戻り値

4 4 1 4

于 2010-06-02T11:30:54.463 に答える
1

あなたが何を求めているのかは明確ではありません。

aによって消費されるバイト数は、byte[]その長さだけです。bytes.length メモリ内でJavaによって消費されるバイト数は、 メモリString内でUCS-2としてエンコードされるため、1文字あたり2バイトです。にシリアル化される場合、選択した文字エンコードによって異なります。シリアル化して確認する必要があります。2*str.length()Stringbyte[]

しかし、あなたは本当に何をしようとしているのですか?

于 2010-06-02T11:38:00.593 に答える