質問: msg; }」が実行されるのはわかるのですが、 public String toString(){ return ("msg : " + msg); } に関しては明示的に呼び出されていないので、実行される理由が分かりません。なぜ上記は実行されるのでしょうか?
回答: JavaDocでjava.lang.SystemのページのSystem.outを探します。 PrintStreamクラスだと分かるのでそちらを見ます。 println(Object)が呼ばれている(というか**自分が**呼ぶようにコードを書いている)ので説明を読みます)。 > > Objectを出力して、行を終了します。 このメソッドは最初にString.valueOf(x)を呼び出して印刷オブジェクトの文字列値を取得し、print(String)とprintln()を呼び出すように動作します。 > > > と書いてあります。 なので、java.lang.Stringのページを開いてvalueOf(Object)の説明を読みます)。 > > 引数がnullの場合は"null"に等しい文字列。それ以外の場合はobj.toString()の値が返される。 > > > と書いてあってtoStringが呼び出されることがわかります。 こうやってコードの動作を調べていくのです。