2011-11-16 14 views
0

バイト配列に変換されたときに文字列がどうなるか教えてください。何が起こり、どのように私はこのバイト配列にStringを追加できますか?Javaのバイト配列

例:ロケットは楽しいです。

答えて

0

文字列をバイト配列に変換すると、各文字(通常1バイト)が単純なキャスト(または文字あたり2バイトを意味する他のエンコーディング)でASCIIテキスト値に変換されますが、シンプルなASCIIの例に固執する)。その配列には実際には何も追加できません。なぜなら、配列のサイズは一度であり、サイズを変更するには、その配列を大きな配列にコピーして代わりに挿入する必要があるからです。文字列を連結したいのであれば、+または+の演算子を使用する文字列は、StringBuilder(またはStringBufferはJavaのどちらかを忘れてしまいます)の場合は、それぞれ追加するたびに追加する必要があります。新しい不変文字列を作成します。これは多くのことを行うとかなりコストがかかります。

+0

バイト配列に変換された後にサンプルの文字列を表示できますか?私は理解するためにその内容を見る必要があります –

1

私は、以前の記事では、16ビット-vs-8ビット表現の観点から文字列にどのようなことが起こっているのかがよく分かったと思います。バイト配列を拡張する際の質問の後半は、通常、System.arraycopy(src、srcPos、dest、destPos、length)を使用して実行されます。

String str="Rockets are fun."; 
byte[] ba=str.getBytes(); 
byte[] bigger=new byte[23]; 
System.arraycopy(ba, 0, bigger, 0, ba.length); 
byte[] toFly=" to fly.".getBytes(); 
System.arraycopy(toFly, 0, bigger, 15, toFly.length); 
System.out.println(new String(bigger, "UTF-8"));