0
String myString="Plz_help";

「myString」はオブジェクトではなく、実際のオブジェクトのベースアドレスを格納するオブジェクト参照変数であることがわかりました。したがって、「myString」は実行時にアドレスを返す必要があります

System.out.println(myString);

しかし、出力に「Plz_help」を返しています。

Myclass obj_ref_var=new Myclass();

作成した他のクラスに同じ System.out.println(obj_ref_var) を使用すると、アドレスが返されます。

4

4 に答える 4

5

オブジェクト参照を呼び出すとSystem.out.println、システムはtoString()、この参照が参照する実際のオブジェクトに対して定義されたメソッドを実行します。このStringメソッドはその値を返します。

どうやら、toString()クラスのメソッドを定義していないため、オブジェクト クラス名 + ハッシュコードを取得します。

于 2012-05-12T07:22:59.890 に答える
2

printlnsについて知っておりString、その内容を出力します。

a 以外のものを に渡すとStringprintln暗黙的にそのtoStringメソッドが呼び出されます。デフォルトのtoStringonは、表示されObjectているものを返します。これは、アドレスではなく、クラスの名前 a@、オブジェクトのハッシュ コードの 16 進バージョンです

于 2012-05-12T07:23:04.467 に答える
2

さて、参照を使用してオブジェクトのメソッドSystem.out.printlnを呼び出します。toString

stringのtoString()メソッドは文字列自体を返すため、これが出力されます。

toStringただし、 のメソッドをオーバーライドしていないため、クラス名 + ハッシュコードであるMyClassデフォルトの が返されます。toString

于 2012-05-12T07:23:52.627 に答える
1

オブジェクトの場合System.out.println()、println メソッドは null かどうかをチェックし、null の場合は null を出力します。null でない場合はtoString()、オブジェクトのメソッドを呼び出します。のtoString()メソッドはメソッドをStringオーバーライドして、Object.toString()それ自体を返します。

とにかく、System.out.println()参照を印刷せず、オブジェクト自体を印刷します。オブジェクトの toString() の実装は、オブジェクトのクラス名とそれに続く hashCode を返します。

于 2012-05-12T07:23:23.860 に答える