一个Java StringBuilder可以容纳多少个字符?
StringBuilder在JAVA中是否有最大容量的字符限制一个Java StringBuilder可以容纳多少个字符?,java,stringbuilder,jdk1.6,capacity,Java,Stringbuilder,Jdk1.6,Capacity,StringBuilder在JAVA中是否有最大容量的字符限制 StringBuilder url=new StringBuilder(); stmt = connnection.createStatement(); String sql="SOME QUERY"; rs = stmt.executeQuery(sql); while(rs.next()) { String emailId=rs.getString("USER_EMAIL_ID"); url.append(e
StringBuilder url=new StringBuilder();
stmt = connnection.createStatement();
String sql="SOME QUERY";
rs = stmt.executeQuery(sql);
while(rs.next())
{
String emailId=rs.getString("USER_EMAIL_ID");
url.append(emailId);
}
StringBuilder变量“url”是否具有最大容量,或者它可以容纳所有内容?是的,它的最大整数容量限制为2147483647(技术上)
StringBuilder
在对象内部保存字符,数组的大小有限制 如果你通过这个链接,这可能会让你更清楚
现在您要声明任何StringBuilder类的容量,然后为此定义一个构造函数StringBuilder(int initCapacity)
StringBuilder(int initCapacity)
:-创建具有指定初始容量的空字符串生成器
由于参数为int
,因此StringBuilder
类可达到的最大容量将为2147483647
< <代码> StringBuilder < /COS>类中的容量上下文有多种方法,这些方法也考虑了类型<代码> int >的参数。
void setLength(int newLength):-设置字符序列的长度。如果newLength小于length(),则字符序列中的最后一个字符将被截断。如果newLength大于length(),则在字符序列的末尾添加空字符
void-ensureCapacity(int-minCapacity):-确保容量至少等于指定的最小值
这些方法还将参数作为int
类型。因此,使用这些方法或构造函数,您将能够生成最大容量为2147483647
的对象。这允许通过在字节数组中存储字符来更有效地存储字符串。如果所有字符都是拉丁文1,则每个字符使用一个字节,否则每个字符使用两个字节
因此,答案是:如果启用了压缩字符串(默认值),并且您的StringBuilder
仅包含拉丁文1字符,则最大大小为Integer.MAX\u VALUE
*,否则为Integer.MAX\u VALUE/2
*
*或者稍微少一点,请参见您展示的方法中没有一种与最大容量有关,这就是问题所在。你提供的链接也没有提到最大容量。至于您的最后一句话,仅仅因为参数是一个
int
,并不意味着您在给定最大可能整数值和new StringBuilder(integer.MAX\u值)时不会得到错误
将获得OutOfMemoryError:请求的数组大小超过VM限制
,无论您为VM分配了多少内存。简言之,这个答案中没有一部分与这个问题相关且准确。@Andreas是的,你是对的。如果没有足够的内存可用,则会引发OutOfMemory
JVM错误。我没有提到这个错误。如果有足够的内存可用,并不意味着新字符[Integer.MAX\u VALUE]
可以工作。数组的最大大小可能会受到其他约束的限制,这些约束取决于平台。如果超出最大限制,会发生什么情况?