JVM字串常量池StringTable
阿新 • • 發佈:2020-07-19
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個位元組儲存
- StringBuffer和StringBuilder也做了一些修改。
jdk1.9的String結構示例:
public final class String implements java.io.Serializable, Comparable<String>,CharSequence { @Stable private final byte[] value; }