Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个Java StringBuilder可以容纳多少个字符?_Java_Stringbuilder_Jdk1.6_Capacity - Fatal编程技术网

一个Java StringBuilder可以容纳多少个字符?

一个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在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(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]
可以工作。数组的最大大小可能会受到其他约束的限制,这些约束取决于平台。如果超出最大限制,会发生什么情况?