Java中的字符串比较和字符串实习
何时应该将String
作为对象进行比较,何时应该使用equals
方法? 为了确保,我总是使用equals
,但这似乎不是很有效。 在什么情况下我可以确定string1 == string2
是安全的?
谢谢!
你应该几乎总是使用equals
。 您可以确定string1 == string2
将在以下情况下起作用:
- 您已经确定以其他方式获得了不同的值(例如,您正在使用从集合中提取的字符串值,但出于某些其他原因进行比较)
- 你知道你正在处理编译时字符串常量
- 你自己手动实现了字符串
根据我的经验,它确实不会经常发生。
根据我所知的Java,如果对这些对象的引用相同,则string1==string2
将为true。 看看以下案例
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
如果您确定对象是相同的,则只能使用==
进行比较。
例如,如果您有最终的静态String变量,则可能会发生这种情况。 您可以确定在同一对象之间进行比较。
坚持equals
字符串比较。