Java 文字列の比較

<< 戻る   トップ >>

これはまたずいぶん初歩的なテーマだが、このあいだついうっかりこんなコードを書いてしまった。

String name;
...
if ( name == "jugemu" ) {
    ....
}

オブジェクトの内容の比較は equals() メソッドを使わなくてはイケナイ、ということは骨身に染みているはずなのだが、魔が差していたとしかいいようがない。問題はそれでも (誤って) 期待したように動いていたということに驚いたのである。

ひょっとして String オブジェクトの比較演算だけ特例を設けたか?とも思ったのだが、JavaWorld Online 「Javaにおける文字/文字列の扱い方」によると、Java の内部での文字列表の仕様により、定数文字列に関しては == が使えることもあるようだ。しかし別に文字列の比較が特化されたわけではないので、やはり地道に name != null && name.eqals( "jugemu" ) とやった方が無難だ。

いま思いついて試してみたのだが、"jugemu".equals( name ) というのもなかな邪悪そうなのに動くぞ。name が null でも大丈夫。


作成: 2006-07-13 10:29:05.0更新: 2006-07-29 16:15:55.0
http://museo-anonimo.jp/nanban/?id=242,http://museo-anonimo.jp/nanban/tr/242