Java中的字符串比较和字符串实习

时间:2010-10-07 20:46:49

标签: java string equals string-comparison string-interning

什么时候应该将String作为对象进行比较,何时应该使用equals方法?为了确保,我总是使用equals,但这似乎不是很有效。在什么情况下我可以确定string1 == string2是否可以安全使用?

谢谢!

3 个答案:

答案 0 :(得分:16)

你应该总是使用equals。您可以确定string1 == string2在以下情况下有效:

  • 您已经确定以其他方式获得了不同的值(例如,您正在使用从集合中提取的字符串值,但出于其他原因进行比较)
  • 你知道你正在处理编译时字符串常量
  • 您自己手动实施了字符串

根据我的经验,这种情况并非经常发生。

答案 1 :(得分:1)

据我所知,只有对这些对象的引用相同时,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

答案 2 :(得分:0)

如果您确定对象相同,则只能使用==进行比较。

例如,如果您有最终的静态String变量,则可能会发生这种情况。您可以确定在同一个对象之间进行比较。

坚持使用equals进行字符串比较。