Chuỗi là một lớp trong Java lưu trữ một chuỗi ký tự, nó thuộc về java.lang bưu kiện. Khi bạn tạo một đối tượng Chuỗi, bạn không thể sửa đổi chúng (không thể thay đổi).
Bộ nhớ
Tất cả các đối tượng Chuỗi được lưu trữ trong một vị trí bộ nhớ riêng biệt trong vùng đống được gọi là Chuỗi Nhóm không đổi .
Bất cứ khi nào bạn xác định một giá trị Chuỗi, JVM sẽ tạo một đối tượng Chuỗi với giá trị đã cho trong nhóm hằng chuỗi. Do đó, nếu bạn chạy chương trình trên, hai giá trị Chuỗi sẽ được tạo trong nhóm hằng chuỗi.
Phương thức intern ()
Phương thức này trả về giá trị của Chuỗi hiện tại từ nhóm các giá trị Chuỗi duy nhất. Bất cứ khi nào bạn gọi phương thức này trên một Chuỗi cụ thể, nếu nhóm hằng số Chuỗi đã chứa một Chuỗi bằng với nó (theo phương thức bằng của lớp Đối tượng), thì nó sẽ được trả về. Nếu không, Chuỗi hiện tại được thêm vào nhóm hằng chuỗi trả về một tham chiếu đến nó.
tức là nếu bạn gọi phương thức này trên hai Chuỗi có nội dung giống nhau, nó được đảm bảo rằng chúng chia sẻ cùng một bộ nhớ.
Phương pháp này rất hữu ích để giảm bộ nhớ bị chiếm dụng trong trường hợp có nhiều giá trị trùng lặp.
Ví dụ
Trong phần tiếp theo, chúng tôi sẽ tạo hai Chuỗi (sử dụng từ khóa mới) có cùng nội dung và so sánh chúng bằng cách sử dụng toán tử “==”. Mặc dù cả hai đối tượng đều có cùng giá trị, vì chúng không tham chiếu đến cùng một đối tượng (bộ nhớ) nên kết quả sẽ là false.
public class InternExample { public static void main(String args[]) { String str1 = new String("Hello"); str1 = str1.intern(); String str2 = "Hello"; str2 = str2.intern(); System.out.println(str1.equals(str2)); } }
Đầu ra
false
Tuy nhiên, nếu bạn gọi phương thức intern trên cả hai đối tượng trước khi so sánh chúng, vì nó đảm bảo rằng cả hai đối tượng chia sẻ cùng một bộ nhớ nếu chúng có cùng nội dung thì kết quả sẽ là true.
public class InternExample { public static void main(String args[]) { String str1 = new String("Hello"); str1 = str1.intern(); String str2 = new String("Hello"); str2 = str2.intern(); System.out.println(str1==str2); } }
Đầu ra
true