2016-05-03 28 views
18

以下内容在eclipse中对我没有任何回报,这是预期的行为吗?当太大时,StringBuilder.toString()在Eclipse控制台中作为空字符串打印?

StringBuilder sb = new StringBuilder(""); 
for(int i = 0; i < 256*256*2*6; i++) { 
    sb.append("a"); 
} 
System.out.println(sb.toString()); 

代码返回而不会出现错误,但其大小以及withhin存储器容量不同于Maximum number of characters stringbuilder can accommodate

解决:问题在于Eclipse控制台和启用(窗口 - >首选项 - >运行/调试 - >控制台 - >固定宽度控制台)将正常打印该行。

+3

不,这些问题有一个错误,而我的正常完成,但没有返回。而且我的数字还没有那么大,仍然在int 8 + 8 + 1 + 3 = 20位长度范围内。 – HopefullyHelpful

+3

其完美的作品只是在这里看看> https://ideone.com/nE6vEB –

回答

31

问题可能是您的控制台无法打印如此长的字符串。如果您尝试:

System.out.println(sb.toString().length()); 

改为it will print what you expect (786432)

+1

我在eclipse中试过,确实不起作用,即使控制台缓冲区足够大。这似乎与_line_的长度有关,因为附加'a \ n'而不是'a',将显示我的情况中的全部内容。 – Berger

+0

@Berger在Eclipse(窗口 - >首选项 - >运行/调试 - >控制台)中,你有没有选中*限制控制台输出*?顺便说一句,System.out.println的最大值等于Integer.MAX_VALUE(2,147,483,647),如果我没有弄错,这是数组可以容纳的最大值,而String是char []。 –

+0

@凯文Cruijssen:我禁用了限制,但是巨大的线没有显示。 – Berger

相关问题