1/3
- 下载图片
- 复制图片
。
频道主
什么是字符串常量池?
字符串常量池(String Pool)保存着所有字符串字面量,这些字面量在编译时期就确定。字符串常量池位于堆内存中,专门用来存储字符串常量。在创建字符串时,JVM首先会检查字符串常量池,如果该字符串已经存在池中,则返回其引用,如果不存在,则创建此字符串并放入池中,并返回其引用。
String最大长度是多少?
String类提供了一个length方法,返回值为int类型,而int的取值上限为2^31 -1。
达到这个长度的话需要多大的内存吗?
String内部是使用一个char数组来维护字符序列的,一个char占用两个字节。如果说String最大长度是2^31 -1的话,那么最大的字符串占用内存空间约等于4GB。
也就是说,我们需要有大于4GB的JVM运行内存才行。
那String一般都存储在JVM的哪块区域呢?
字符串在JVM中的存储分两种情况,一种是String对象,存储在JVM的堆栈中。一种是字符串常量,存储在常量池里面。
什么情况下字符串会存储在常量池呢?
当通过字面量进行字符串声明时,比如String s = "程序新大彬";,这个字符串在编译之后会以常量的形式进入到常量池。
#Java
字符串常量池(String Pool)保存着所有字符串字面量,这些字面量在编译时期就确定。字符串常量池位于堆内存中,专门用来存储字符串常量。在创建字符串时,JVM首先会检查字符串常量池,如果该字符串已经存在池中,则返回其引用,如果不存在,则创建此字符串并放入池中,并返回其引用。
String最大长度是多少?
String类提供了一个length方法,返回值为int类型,而int的取值上限为2^31 -1。
达到这个长度的话需要多大的内存吗?
String内部是使用一个char数组来维护字符序列的,一个char占用两个字节。如果说String最大长度是2^31 -1的话,那么最大的字符串占用内存空间约等于4GB。
也就是说,我们需要有大于4GB的JVM运行内存才行。
那String一般都存储在JVM的哪块区域呢?
字符串在JVM中的存储分两种情况,一种是String对象,存储在JVM的堆栈中。一种是字符串常量,存储在常量池里面。
什么情况下字符串会存储在常量池呢?
当通过字面量进行字符串声明时,比如String s = "程序新大彬";,这个字符串在编译之后会以常量的形式进入到常量池。
#Java
2024-10-28
浏览128
暂无评论
登录后评论
1
评论
分享
