Computer >> Máy Tính >  >> Lập trình >> Java

Khi nào chúng ta có thể sử dụng phương thức intern () của lớp String trong Java?


Phương thức intern () của lớp chuỗi có thể được sử dụng để đối phó với sự cố trùng lặp chuỗi trong Java. Sử dụng intern () chúng tôi có thể tiết kiệm rất nhiều bộ nhớ do phiên bản chuỗi trùng lặp . Một chuỗi trùng lặp nếu nó chứa cùng nội dung với một chuỗi khác nhưng nó có thể chiếm các vị trí bộ nhớ khác nhau.

Chúng tôi biết rằng JVM duy trì một bộ nhớ heap riêng biệt cho các ký tự chuỗi cho hiệu suất. Sau khi chúng tôi khai báo một chuỗi theo nghĩa đen, nó sẽ chuyển đến nhóm này và nếu một biến khác được chỉ định với cùng một giá trị chữ, nó sẽ được chọn từ nhóm thay vì tạo một đối tượng mới và lưu trữ nó trong heap . Nhưng nếu chuỗi được khai báo bằng cấu trúc mới r, một đối tượng mới sẽ được tạo ra ngay cả khi tồn tại chữ trong pool. Để tránh điều này và để buộc JVM chọn từ từ nhóm, chúng tôi sử dụng intern () phương pháp.

Java tự động thực hiện tất cả các chuỗi theo mặc định. Thực tập sinh () phương thức có thể được sử dụng trong chuỗi với n ew String () để so sánh chúng bằng toán tử ==.

Ví dụ

public class StringInternClassTest {
   public static void main(String[] args) {
      String s1 = "Tutorix";
      String s2 = "Tutorix";
      String s3 = new String("Tutorix");
      final String s4 = s3.intern();
      String s5 = "?Tutorix".substring(1);
      String s6 = s5.intern();
      System.out.println(s1 == s2);
      System.out.println(s2 == s3);
      System.out.println(s3 == s4);
      System.out.println(s1 == s3);
      System.out.println(s1 == s4);
      System.out.println(s1 == s5);
      System.out.println(s1 == s6);
      System.out.println(s1.equals(s2));
      System.out.println(s2.equals(s3));
      System.out.println(s3.equals(s4));
      System.out.println(s1.equals(s4));
      System.out.println(s1.equals(s3));
   }
}

Đầu ra

true
false
false
false
true
false
true
true
true
true
true
true