观察如下代码:
String str1 = new String("hello");
String str2 = new String("hello");
boolean b1 = (str1== str2);
boolean b2 = (str2.equals(str1));
String str3 = "hello";
String str4 = "hello";
String str5 = "hello123";
boolean b3 = (str3 == str4);
boolean b4 = (str3 == str5);
boolean b5 = str3.equals(str4);
观察如下调试输出截图:
虽然str1和str2的内容都是"hello",但是用 "=="比较时并不相同,此时是判断两个String是否指向同一个对象。java跟windows平台上的可执行程序一样,同样的字符串变量,全部指向同一个内存地址。
java中,只有用String.equal比较两个字符串时,才会判断指向的字符串的内容是否一致。