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);
}
}
Đây là kết quả tôi nhận được trên java 1.6.0_27:Java lưu trữ Strings như thế nào và chuỗi con hoạt động như thế nào?
false
true
false
true
Ai đó có thể xin giải thích đầu ra. Tôi biết Java phân biệt giữa String được lưu trữ trong heap và String được lưu trữ trong String "common pool" (có thể được interned). Nội bộ, đại diện của họ khác nhau như thế nào. Làm thế nào nó thay đổi thuật toán chuỗi con. Vui lòng trích dẫn sách/bài viết/blog, v.v. ở bất kỳ nơi nào phù hợp.
Đó là nhiều câu hỏi. Và nó thậm chí sẽ không phải là câu trả lời tương tự cho JDK gần đây và cũ. –
Nếu bạn thực sự muốn biết cách hoạt động, hãy đọc nguồn. Bạn sẽ không được tham khảo tốt hơn. Lưu ý: điều này đã được thay đổi trong bản cập nhật Java 7 6.;) –
@dystroy: Đó là lý do tại sao tôi đã đưa ra phiên bản Java của mình trong câu hỏi. Tôi không nhớ một câu trả lời cho JDK cũ hoặc gần đây. – Bruce