有人能解释我为什么这个代码不打印的数字?
String text = new String("SomeString");
for (int i=0; i<1500; i++) {
text = text.concat(i+"");
}
System.out.println(text);
结果
SomeString
如果我降低运行次数为1000它的工作原理,为什么? 并且如果我不仅增加了许多,而且一个字符,它的工作原理。
确定新的更新:
感谢您的代码示例。 我尝试所有这些,但我发现就是,控制台
实际显示的数字,但只有在FONTCOLOR白色。 但是字符串的第一部分SomeString
是黑色的。
我用jdk1.7.0_06!
String.concat()接受一个String
参数。
如果加上“数字和字符”你是因为添加一个字符串+
运营商了解您链接字符串和数字数据。
反正代码运行没什么问题,直到追加1499号如预期。
有一对夫妇的事情,你可以试试。 我给你们俩的一个例子。
首先,在Java中,你可以简单地添加字符串连接在一起。 基元如int
应自动转换:
String text = new String("SomeString");
for (int i = 0; i < 1500; i++) {
text += i;
}
System.out.println(text);
其次,如果第一种方法仍无法为你工作,那么你可以尝试将您的显式转换int
为String
,像这样:
String text = new String("SomeString");
for (int i = 0; i < 1500; i++) {
text += Integer.toString(i);
}
System.out.println(text);
做同样的更有效
StringBuilder text = new StringBuilder("SomeString");
for (int i = 0; i < 1500; i++) {
text.append(i);
}
System.out.println(text);
这两个例子都为我工作在Java 6更新32和Java 7更新3。
哇,这是奇怪的。 我得到了相同的结果。 乍一看,它看起来像在JVM中的错误,但我想从运行命令行程序,它工作正常。 它必须是在Eclipse控制台中的错误。 我发现,改变控制台有一个固定的宽度解决显示问题。
我还发现,如果要更换i + ""
与i + ","
它显示的罚款。 似乎有什么东西Eclipse控制台不喜欢有纯数字的长时间连续拉伸。
String text = "SomeString";
for (int i = 0; i < 15000; i++) {
// text = text.concat(i + ""); // Doesn't display correctly
// text += i; // Doesn't display correctly
text = text.concat(i + ","); // Displays correctly
// text += i + ","; // Displays correctly
}
System.out.println(text);
此错误是有点令人担心我。 好找!
更新:我尝试了打印“XXXXXX”长行,发现多达32000个字符正确显示。 当行变为32001它不显示。 当我把“12345” +“XXXXXXXXX ......”,我依然能显示32000“X”字符,这意味着线路长度超过32000长,所以它是没有任何关系的总线路长度。 看来,这是String对象的部分的长度做。