- PR -

Stringの比較で.equals()を使う理由

1
投稿者投稿内容
りょうちん
ベテラン
会議室デビュー日: 2002/09/11
投稿数: 58
投稿日時: 2002-11-13 12:44
たびたびお世話になっています。

String同しの比較で、.equals()を使用する本当の理由がわかりません。
intの時は「==」ってな具合でしか、わかりません。

どの他様かよろしくお願いします。
DaikiRyuto
大ベテラン
会議室デビュー日: 2002/07/23
投稿数: 200
投稿日時: 2002-11-13 13:07
引用:

String同しの比較で、.equals()を使用する本当の理由がわかりません。
intの時は「==」ってな具合でしか、わかりません。



前もあったような気がしますが、String型は参照型なので、同じ文字列を持つオブジェクトでも、実体が違う場合は==だとfalseになります。
latte
常連さん
会議室デビュー日: 2002/11/07
投稿数: 38
投稿日時: 2002-11-13 13:13
http://java-house.jp/ml/archive/j-h-b/001005.html#body
からたどるとのっていますよ。
yu
ベテラン
会議室デビュー日: 2002/09/29
投稿数: 58
お住まい・勤務地: 東京
投稿日時: 2002-11-13 19:23
すごい古い記事ですね。

このころの僕は、「例外処理がわかりませ〜ん」なんて、
JavaHouse に投稿してました。
Visual C++ の例外処理がマクロだった時代でしたっけ?

文字列の比較方法は、a.intern() == b.intern() という方法もありますよ。
なぁ〜んて、初心者を大混乱させることを言ってみたりする...

H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-11-13 19:28
Java FAQもご覧あれ
http://gimlay.org/~javafaq/S008.html#S008-01
未記入
ぬし
会議室デビュー日: 2002/03/28
投稿数: 255
投稿日時: 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/09/11
投稿数: 58
投稿日時: 2002-11-14 08:56
みなさんありがとうございました。

とても勉強になりました。
またたびたびお世話になる事があるとおもいますが、
その時はよろしくお願いします。

1

スキルアップ/キャリアアップ(JOB@IT)