1. 程式人生 > 實用技巧 >JVM字串常量池StringTable

JVM字串常量池StringTable

String的基本特性

  • String:字串,使用一對""引起來表示。
    • String sl = "hello";//字面量的定義方式;
    • String s2 = new String("hello") ;
  • String類是已經被宣告為final的, 不可被繼承。
  • String實現了Serializable介面:表示字串是支援序列化的。 實現了Comparable介面:表示String可以比較大小
  • String在jdk8及以前內部定義為“private final char value[]”用於儲存字串資料。jdk9時改為byte[]
  • 自jdk9以來,String再也不用char[] 來儲存了,改成了byte[] 加上字元編碼集的標識,節約了一些空間。基於字串的內容,決定用何種編碼去儲存。特定的編碼集如ISO-8859--1/Latin-1:一個character字符采用一個位元組儲存。其他編碼集如UTF-16:一個character字符采用2個位元組儲存
    。中文字元也是採用2個位元組儲存。
  • StringBuffer和StringBuilder也做了一些修改。

jdk1.9的String結構示例:

public final class String implements java.io.Serializable, Comparable<String>,CharSequence {
@Stable
private final byte[] value;
}