質問: "abc"; for (int i=0; i < 5; i++) { System.out.println(str.getBytes("UTF-8")); } を実行すると、結果が一意ではありません。 これはどういう仕組みでそのような現象となるのでしょうか? 文字コード、プラットフォーム依存だけなら、対応の仕方もあるかと思いますが、毎回出力結果が他の原因で違うとなると根本原因を調べなければいけません。 byteはメモリ領域にスペースを確保する事で、このような結果となるのでしょうか?アルゴリズムが分からず、ご存知の方いましたら、ご教示頂ければ幸いです。 よろしくお願いいたします。
回答: それで出力されるのはbyteじゃなくてbyte[]だよ。 System.out.println()は、引数をtoString()した結果を標準出力す る。 そして、配列のtoString()は中身の要素を返すようにはできて いない。 毎回異なる理由は、全てのクラスの根本、ObjectのtoString() を調査すること。