[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 10153] Re: Effective Java 第 1 回議事録
福嶋です。
うまく意図が伝わらなかったか、本当に私が無知なのかわかりかねています。
On Tue, 28 May 2002 22:15:42 +0900, according to the article
"[jfriends-ml 10150] Re: Effective Java 第 1 回議事録"
Kazuya Maebashi <PXU00211@xxxxxxxxxxx> wrote:
> >> >equals()と==をものによって使い分ける、
> >> >というのも混乱しそうで避けたいです。
ここで言いたかったのは、
本には、パフォーマンス向上のために、Stringの文字列内容比較でも"=="を
使ってできるようにインスタンスを生成・取得したらいいじゃないか、とい
うようなことが書いてあるけど、すべてのオブジェクトでこのようなことを
しない限り、すなわち、すべてのオブジェクト(クラス)のインスタンスが、
"=="でもequals()でも同じ結果を返そうとしない限り、equals()と"=="で同
じ結果が得られないオブジェクト(クラス)のインスタンスも存在してしまう。
Stringを扱う時と、そういったオブジェクトを扱う時で、equals()と"=="を
使い分けると、混乱しそう
ということです。Stringだけで、equals()と"=="を混同しているわけではあり
ません。
> >> これは混乱するほど難しい代物でもないと思う.これが使い分け
> >> られないようでは,StringとStringBufferの使い分けもできない
> >> だろうし,アルゴリズムのことも理解できてないのでは.
ので、これはおそらくあてはまりません。
> > これは結局、「使い分けろ」「使い分けるな」「使い分けたほうがよい」
> >「使い分けられる人は使い分けたほうがよい」のどれをおっしゃているの
> >でしょうか? (^^;
>
> 村山さんじゃないですが、
>
> 「使い分ける」という言葉を使うこと自体ナンセンス。
> 意味がぜんぜん違うんだから。
>
> と思いますですが。
もう一度私の主張を言葉を変えて繰り返すと、
著者は、Stringインスタンスの比較をequals()ではなく、同じ文字列は同じ
参照を持つようにして、"=="を使って比較した方がパフォーマンスが向上す
るといっている。それはその通りだと思うが、String以外のオブジェクトで
それができるとは限らない。そうすると、Stringの場合は"=="で比較するけ
ど、Xxxxの場合はequals()で比較、とかになり、プログラマは混乱するので
はないか?
ということです。
----------------------------------------
(株)PFU ソフトプロダクト事業部第二開発部
福嶋 航 w.fukushima@xxxxxxxxxxxxxxx