關於JAVA中String類型的最大長度


前些天看到一道面試題,題目很容易理解:String的長度限制是多少?

針對這個題目,瀏覽了網友的回答,大概得到了3個層次的答案。

最淺的層次:

  近似計算機內存大小的長度。這是作為一個程序員最淺顯的回答。

一般的層次(大多數人的回答):

通過閱讀String類的源碼,知道有這樣的成員變量,

/** The count is the number of characters in the String. */
private final int count;

count用來記錄字符串的長度,是int型,則String的最大長度為Integer.MAX_VALUE,即2的31次方。這是否是真正的答案呢?

最深層的答案:

65535。

  看到這個題目,立刻聯想到之前的一本書,《深入理解java虛擬機》,剛好只看了一章,Class文件結構。得知在編譯為字節碼文件后,String類型的變量的值在常量池中使用CONSTANT_utf8-info類型表示,而CONSTANT_utf8-info型常量的結構為u1u2u1,得知長度限制使用兩個字節的無符號二進制位表示,從而得出,String的最大長度為2的16次方,即65535。

以上。

 

---- 作者批注:65535只是在編譯階段的限制,運行中時,String對象的內部字符數組可以通過其它手段拼接成大於65535長度的字符串。所以運行時的字符串長度最多還應該是Integer.MAX_VALUE。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM