java字符串String的最大長度,要分兩個階段,編譯階段及運行時階段
編譯階段:
在我們使用字符串字面量直接定義String的時候,會把字符串在常量池中存儲一份。常量池中的每一項常量都是一個表,都有自己對應的類型。String類型,有一張固定長度的CONSTANT_String_info表用來存儲文字字符串值,注意:該表只存儲文字字符串值,不存儲符號引用。
JVM的常量池最多可放65535個項。第0項不用。最后一項最多只能是65534(下標值)。而每一項中,若是放一個UTF-8的常量串,其長度最長是:65535個字節(不是字符)。
運行時階段:
String內部是以char數組的形式存儲,數組的長度是int類型,那么String允許的最大長度就是Integer.MAX_VALUE了,2147483647;又由於java中的字符是以16位存儲的,因此大概需要4GB的內存才能存儲最大長度的字符串。