Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Compact Strings ใน Java 9 คืออะไร


ตั้งแต่ Java 9 JVM จะปรับสตริงให้เหมาะสมโดยใช้คุณลักษณะใหม่ที่เรียกว่า กะทัดรัด สตริง . แทนที่จะมี อักขระ[ ] อาร์เรย์ สตริงสามารถแสดงเป็น byte[] อาร์เรย์ เราสามารถใช้ UTF-16 . อย่างใดอย่างหนึ่งก็ได้ หรือ ละติน-1 เพื่อสร้างหนึ่งหรือสองไบต์ต่ออักขระ หาก JVM ตรวจพบสตริงที่มีเฉพาะ ISO-8859-1/Latin-1 อักขระ จากนั้นสตริงจะใช้หนึ่งไบต์ต่ออักขระภายใน

สตริงสามารถแสดงด้วยสตริงที่กระชับหรือไม่ถูกตรวจพบเมื่อสร้างสตริง คุณลักษณะนี้เปิดใช้งานโดยค่าเริ่มต้นและปิดโดยใช้ -XX:-CompactStrings . ไม่เปลี่ยนกลับเป็น อักขระ[] ใช้งานและจัดเก็บสตริงทั้งหมดเป็น 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

      ---------
}