Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

文字列のbyte出力について

ここの過去ログにも同じ質問がありましたが、原因と対処法について記載されておらず、再度の質問申し訳ありません。

文字列のbyte出力ですが。結果が毎回違い、戸惑っていた所、同じ様な経験をされている方の質問を拝見しました。

String str = "abc";
for (int i=0; i < 5; i++) {
 System.out.println(str.getBytes("UTF-8"));
}

を実行すると、結果が一意ではありません。

これはどういう仕組みでそのような現象となるのでしょうか?

文字コード、プラットフォーム依存だけなら、対応の仕方もあるかと思いますが、毎回出力結果が他の原因で違うとなると根本原因を調べなければいけません。

byteはメモリ領域にスペースを確保する事で、このような結果となるのでしょうか?アルゴリズムが分からず、ご存知の方いましたら、ご教示頂ければ幸いです。

よろしくお願いいたします。

1

回答

4067

閲覧

1件の回答

評価

0

それで出力されるのはbyteじゃなくてbyte[]だよ。

System.out.println()は、引数をtoString()した結果を標準出力す
る。
そして、配列のtoString()は中身の要素を返すようにはできて
いない。
毎回異なる理由は、全てのクラスの根本、ObjectのtoString()
を調査すること。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。