對string常量的字符串長度有沒有限制?
String內(nèi)部是以char數(shù)組的形式存儲,數(shù)組的長度是int類型,那么String允許的最大長度就是Integer.MAX_VALUE了。又由于java中的字符是以16位存儲的,因此大概需要4GB的內(nèi)存才能存儲最大長度的字符串。不過這僅僅是對字符串變量而言,如果是字符串字面量(string literals),如“abc"、"1a2b"之類寫在代碼中的字符串literals,那么允許的最大長度取決于字符串在常量池中的存儲大小,也就是字符串在class格式文件中的存儲格式: CONSTANT_Utf8_info { u1 tag; u2 length; u1 bytes[length]; } u2是無符號的16位整數(shù),因此理論上允許的string literal的最大長度是2^16-1=65535。然而實際測試表明,允許的最大長度僅為65534,超過就編譯錯誤了.