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

Chuỗi nhỏ gọn trong Java 9 là gì?


Kể từ Java 9, JVM tối ưu hóa các chuỗi bằng cách sử dụng một tính năng mới có tên Nhỏ gọn Chuỗi . Thay vì có char [ ] mảng , một chuỗi có thể được biểu diễn dưới dạng byte [] mảng. Chúng tôi có thể sử dụng UTF-16 hoặc Latin-1 để tạo ra một hoặc hai byte cho mỗi ký tự. Nếu JVM phát hiện chuỗi chỉ chứa ISO-8859-1 / Latin-1 ký tự, sau đó chuỗi sử dụng một byte cho mỗi ký tự trong nội bộ.

Chuỗi có thể được biểu diễn bằng một chuỗi nhỏ gọn hoặc không được phát hiện khi chuỗi được tạo. Tính năng này đã được bật theo mặc định và tắt bằng cách sử dụng -XX:-CompactStrings . Nó không hoàn nguyên về char [] triển khai và lưu trữ tất cả các chuỗi dưới dạng UTF-16.

// In Java 8
public class String {
   private final char[] value; // Stores characters in the string
      ---------
}

// In Java 9
public class String {
   private final byte[] value; // Stores characters in the string
   private final byte coder; // a flag whether to use 1 byte per character or 2 bytes per characters for this string

      ---------
}