何時應該比較String
作爲對象,何時應該使用它們的equals
方法?爲了確保,我總是使用equals
,但這看起來效率不高。在什麼情況下我可以確定string1 == string2
是安全使用?Java中的字符串比較和字符串實習
謝謝!
何時應該比較String
作爲對象,何時應該使用它們的equals
方法?爲了確保,我總是使用equals
,但這看起來效率不高。在什麼情況下我可以確定string1 == string2
是安全使用?Java中的字符串比較和字符串實習
謝謝!
您應該差不多總是使用equals
。你可以肯定,如果string1 == string2
將工作:
這真的不會發生字符串很多時候,在我的經驗。
謝謝喬恩,你總是把事情簡單明瞭。 – 2010-10-07 21:28:47
絕對是正確的答案。使用'=='是因爲equals()效率低下是過早優化的一個很好的例子。 – DJClayworth 2010-10-07 21:30:06
而String.intern()在大多數情況下足夠慢以至於無法實現性能。 – Darron 2010-10-07 21:30:09
從我所知道的Java中,string1==string2
只有在對這些對象的引用相同的情況下才爲真。看看下面的情況
String string1 = new String("Bob");
String string2 = new String("Bob");
string1 == string2; // false, they are seperate objects
string1 = string2; // asigning string1 to string2 object
string1 == string2; // true, they both refer to the same object
如果您確定對象相同,則只能使用==
進行比較。
例如,如果您有最終的靜態字符串變量,則可能發生這種情況。你可以肯定的是,在同一個對象之間進行比較。
堅持用equals
進行字符串比較。
String.equals()是有效的。檢查的第一件事是如果string1 == string2。 (實際上Object.equals()檢查這個。) – 2010-10-07 21:01:26
當然!我多麼愚蠢。這是一個非常明顯的事情要做。如你所說,效率高。從來沒有。 *恥辱我!*謝謝! – 2010-10-07 21:26:45