• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Javaの参照型変数の比較についての質問です。)

Javaの参照型変数の比較についての質問

このQ&Aのポイント
  • Javaの参照型変数の比較についての質問です。SUN教科書Javaアソシエイツ P209 問5-8より
  • 「a1.s」と「a2.s」の記述、つまり表記が意味している内容が良く分かりません。解説には「a1.sとa2.sはAクラスのオブジェクトが保持する同一のStringオブジェクトを参照しています。」とあります。
  • Aクラスを生成した時にその中にString型クラスsが作れているということでしょうか。アドバイスをよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • racene
  • ベストアンサー率70% (21/30)
回答No.2

フィールド参照です。 a1.sならa1オブジェクトのsというフィールドの値を参照します。 「Aクラスを生成した時にその中にString型クラスsが」と書いていますが、 クラスとオブジェクトは異なる概念であるということはちゃんとわかっているでしょうか? とりあえずクラスとオブジェクトについて復習すると良いと思います。

taro_11
質問者

お礼

返信ありがとうございます。 見慣れない表記だったので、javaの概念が頭の中で上手く整理出来ていませんでした。 ご指摘の通り、復習をし直します。

その他の回答 (2)

回答No.3

文字列定数 "ABC" は String 型のオブジェクトです。 a1.s や a2.s に代入されているのはこのオブジェクトの参照です。 ここで注意すべきなのは、a1.s や a2.s に代入される "ABC" は同じオブジェクトの参照であるということです。 A型のインスタンス毎に、フィールドa に異なるオブジェクト が代入されても不思議はないのですが、Javaのコンパイラの仕様で 同じ内容の文字列定数のオブジェクトは同一のオブジェクトが使いまわされることに なっています。 詳細は Java の String の intern()メソッドの仕様などを 調べてみてください。

taro_11
質問者

お礼

返信ありがとうございます。 参考書の解説を読んでいるうちに、String型とObject型の違いとその振る舞いが よく分からなくなってしまいました。 また、一から勉強し直します。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

すみません。 「参照型変数」云々の前に、 Javaにおける「クラス」というのがどういう構成になっているか、よく復習してください。 特に「メンバ変数」について。 Javaにおいての基礎中の基礎です。 > class A{String s = ”ABC”;} これの定義の意味がわからなければ、始まりません。

taro_11
質問者

お礼

返信ありがとうございます。 ご指摘の通り私には、初歩的な知識においてまだまだ理解が浅いなと、痛感しております。 復習をします。

関連するQ&A