关于字面量string的长度
来源:3-2 Java String 可以有多长?

AndroidMsky
2019-03-07
老师您好,
我看您是说这个string是存在栈里,栈的限制是65536.
我觉得是主要是class里面的结构体length为两个字节限制的吧(当然您也说了有这个限制),string在内存的存在是char数组形式,无论在哪里都应该会受到数组最大值限制。我觉得栈里只是string的引用没有实际值。
另外那个结构体是怎么看到的,我查了好久不知道怎么看。
我说的有错误请老师指证。谢谢老师
写回答
1回答
-
bennyhuo
2019-03-07
我看您是说这个string是存在栈里,栈的限制是65536.我觉得是主要是class里面的结构体length为两个字节限制的吧(当然您也说了有这个限制)
说的就是字面量 u8 info 结构体的限制,不是栈的限制哈~栈内存有大小限制,但不会这样限制字符串长度。
string在内存的存在是char数组形式,无论在哪里都应该会受到数组最大值限制。
是的没错,但char数组的大小远比 65536 要大,具体的数据实际上在后面讲堆内存开辟的字符串有提到,是整型最大值。不过单纯说受谁的限制,这个也可以作为讨论字面量的一条,只不过它没办法发挥作用了~能想到这一点还是不错滴~
我觉得栈里只是string的引用没有实际值。
没错,我在视频提了的哈,字面量的字符串存在常量池里面,因此受到常量池大小的限制。
另外那个结构体是怎么看到的,我查了好久不知道怎么看。
那个结构体你要去 Java 虚拟机规范里面找。字符串的值在字节码当中以这种结构存储,编码格式就是视频里面不断提到的 Modified-UTF-8
20
相似问题
关于字面量存储在栈上的问题
回答 2
关于string长度限制
回答 1