class StringTesting {
public static void main(String args[])
{
String str = "abcd";
String str1 = new String("abcd");
String str2 = str.substring(0,2);
String str3 = str.substring(0,2);
String str4 = str.substring(0,str.length());
String str5 = str1.substring(0,2);
String str6 = str1.substring(0,2);
String str7 = str1.substring(0,str1.length());
System.out.println(str2 == str3);
System.out.println(str == str4);
System.out.println(str5 == str6);
System.out.println(str1 == str7);
}
}
这是我在 java 1.6.0_27 上得到的输出:
false
true
false
true
有人可以解释一下输出。我知道Java区分存储在堆中的字符串和存储在字符串“公共池”(可以被实习)中的字符串。在内部,它们的表示方式有何不同。它如何改变子字符串算法。请在适当的地方引用书籍/文章/博客等。