会社の大先輩(っつーか俺のJavaの先生の先生)からStringについての質問を受けた。質問の内容は昔読んだ本に書いてあった内容だったので、答えた後に情報元の本を持って行った。 ついでだし、結構ひっかかりやすい所なので一応書いておこう。 String型をイコール(==)比較するとどうなるの?簡単に言うと、Javaの基本に則って「その変数の参照先が同じならtrue、違うならfalseである」という答えになる。 Javaの「==」を使用した比較は、基本型の場合はその数値を比較し、オブジェクト型の場合はその変数への参照アドレスを比較するからだ。 どんな時に参照先が同じで、どんな時に違うの?ここが他のクラスと違う所。言葉だけで説明するのは難しいので、サンプルで説明しよう。このようなプログラムを作成すると、どうなるのか。 String a = "A"; String b = "A"; a = b;