[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00350] Re: オブジェクトの印刷
========== 楽天ビジネス http://business.rakuten.co.jp =========
□■□■□■□■□■□■□■□■ ●既に約3,000社の企業様がご利用中 ●
■ ビジネスサービス商談市場 □ ●必要なサービス提供企業が見つかる●
□ ★楽天ビジネス★ ■ ●素早く簡単に複数社からの見積獲得●
■□■□■□■□■□■□■□■□ ●サービス提供企業の登録も受付中 ●
------------------------------------------------------------------------
上原と申します。
"Satoh" <kgd01422@xxxxxxxxxxxxxxxxx> writes:
> たまたまJavaの参考書にオブジェクトの印刷例が
> 載っていました。
> オブジェクトは本来、クラスのインスタンス化された
> ものでそれ自体印刷する意味があるのかと思って
> おりましたが、...
〜
> 上記は、つらつらAPIリファレンスをサーフィンした結果
> ですが、このオブジェクトの印刷の意味ってあるんで
> しょうかね。(使い道が今ひとつなんですが。)
「印刷」というのは、プリンタとかで紙に印刷する、ということを言っておら
れますか?だとすると、printやprintlnは必ずしも紙に印刷するということを
意味するのではなく、(画面などに)出力する、ということです。
そんなのあたりまえじゃん、というのならOKです。念のためです念のため。
ご質問は、その前提で、IntegerやString型のインスタンスをprintするのは意
味がある表示がなされるからOK として、java.lang.Objectや、あるいは
toString()をオーバライド定義していないクラスのインスタンスをprintした
とき、その出力「クラス名@ハッシュ関数結果の文字列」に何の意味があるか、
ということでしょうか。
まあ、printデバッグ時に「インスタンスが同じかどうか」を確認するのには
役にたつと思いますよ。
HoeHoe h1 = new HoeHoe();
HoeHoe h2 = new HoeHoe();
System.out.println("h1="+h1);
System.out.println("h2="+h2);
:
いろんな処理を経て
:
void foo(HoeHoe h) {
// この時点でのhは果たしてh1か、h2か?
System.out.println("h="+h); // こうすればわかる
}
仮に、Object#toString()が空文字列とか、nullとかを返していたら、
こうはいきません。
ちなみにObjectのハッシュ値はアドレスが得られるのでハッシュ値の
衝突がおきて「たまたま同じ値になる」ということはないです。
--
§NTTS○FT 技術開発部エレクトロニックコマース技術センター 上原 潤二 §
PGP Key fingerprint = B7 C0 CB 1F 1C 88 69 2A 25 36 8A EE 93 A3 61 72