- - PR -
Stringの比較で.equals()を使う理由
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2002-11-13 12:44
たびたびお世話になっています。
String同しの比較で、.equals()を使用する本当の理由がわかりません。 intの時は「==」ってな具合でしか、わかりません。 どの他様かよろしくお願いします。 | ||||
|
投稿日時: 2002-11-13 13:07
前もあったような気がしますが、String型は参照型なので、同じ文字列を持つオブジェクトでも、実体が違う場合は==だとfalseになります。 | ||||
|
投稿日時: 2002-11-13 13:13
http://java-house.jp/ml/archive/j-h-b/001005.html#body
からたどるとのっていますよ。 | ||||
|
投稿日時: 2002-11-13 19:23
すごい古い記事ですね。
このころの僕は、「例外処理がわかりませ〜ん」なんて、 JavaHouse に投稿してました。 Visual C++ の例外処理がマクロだった時代でしたっけ? 文字列の比較方法は、a.intern() == b.intern() という方法もありますよ。 なぁ〜んて、初心者を大混乱させることを言ってみたりする... | ||||
|
投稿日時: 2002-11-13 19:28
Java FAQもご覧あれ
http://gimlay.org/~javafaq/S008.html#S008-01 | ||||
|
投稿日時: 2002-11-13 20:10
>String同しの比較で、.equals()を使用する本当の理由がわかりません。
>intの時は「==」ってな具合でしか、わかりません。 インスタンスに対し"=="を使った時は,単純にインスタンスが 同じものかどうかを比較しています.これはStringでも他の クラスのインスタンスでも同じです. これに対しequals()は,同値関係といいますか,もう少し ニュアンスが異なるわけです.例えばStringの場合は,それの 表す文字列が等しければ(異なるインスタンスの場合でも) trueであると「定義」しています. #ちなみに,ほとんどのクラスではequals()でする処理は #"=="と同じ. 田中一郎さん(A)と同姓同名の田中一郎さん(B)がいても, AとBは異なります.でも,千円札(A)と他の千円札(B),100円玉10枚 の場合は等しいでしょうか?それとも異なるでしょうか? A,B,Cは同じ物ではありません.しかし,A,B,Cは同じ金額で, 交換/両替も可能です.前者の場合が"==",後者の場合が .equals()と言えば,なんとなく理解できるのではないでしょうか. | ||||
|
投稿日時: 2002-11-14 08:56
みなさんありがとうございました。
とても勉強になりました。 またたびたびお世話になる事があるとおもいますが、 その時はよろしくお願いします。 | ||||
1
