最近在看《Core Java 2》,有种相见恨晚的感觉,比先前看得几本书都要好很多,其中很多讲解堪称经典。其中关于测试字符串是否相等的部分就非常清楚。原文如下:
Do not use the == operator to test whether two strings are equal! It only determines whether or not the strings are stored in the same location. Sure, if strings are in the same location, they must be equal. But it is entirely possible to store multiple copies of identical strings in different places.
Do not use the == operator to test whether two strings are equal! It only determines whether or not the strings are stored in the same location. Sure, if strings are in the same location, they must be equal. But it is entirely possible to store multiple copies of identical strings in different places.
String greeting = "Hello"; //initialize greeting to a stringIf the virtual machine would always arrange for equal strings to be shared, then you could use the ==constants are shared, not strings that are the result of operations like + or substring. Therefore, never use == to compare strings lest you end up with a program with the worst kind of bug—an intermittent one that seems to occur randomly. operator for testing equality. But only string
if (greeting == "Hello") . . .
// probably true
if (greeting.substring(0, 3) == "Hel") . . .
// probably false