Sử dụng new String có thêm nội dung vào string pool không?

String s = new String("ABC");

Cho mình hỏi nếu khởi tạo một String bằng toán tử new như trên thì nội dung chuỗi có được thêm vào pool hay không.
Mình đã search trên google khá nhiều, nhưng không có trang nào đề cập kĩ vấn đề này.

Có. Nhưng s không phải là đối tượng trong pool.

4 Likes

String pool được add + load tự động bởi compiler và runtime. Nên khi new String("abc") thì sẽ có 2 chuyện xảy ra. “abc” sẽ được tìm trong string pool, nếu có thì return về, nếu không thì thêm vào string pool rồi trả reference về. String object khi này nhận reference từ string pool và khởi tạo string object trên heap.

String pool cũng có thể thêm bằng thay thông qua hàm String.intern(). Khi này, nếu string không được sử dụng nữa sẽ bị GC hốt xác. Còn với những string được thêm bởi compiler thì sẽ được dọn đi khi một class không còn được sử dụng nữa.

7 Likes

À hiểu rồi, thanks hai bạn nhiều.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?