严格来说,字符串确实有长度限制。
1.在字符串中使用char[]数组来存储字符串的内容。数组的下标是integer(也可以参考字符串构造方法string(charvalue[]intoffset,intcount),可以知道字符数用integer表示,integer的范围(java指定32位)是2g,即java数组的最大长度是2g,即,字符串不能超过2g个字符。
2.java数组的大小还有其他限制吗?实际上,数组的大小不能超过java堆的大小,java堆的最大大小可以由startup参数指定。如果java堆足够大,那么可以连续增加数组的最大长度。
3.因此,理论上,一个字符串不能超过2g个字符,而且有可能少于2g个字符。