何时应该比较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