繁体   English   中英

Java:如何在循环中连接字符串

[英]Java: How to Concatenate a string in a loop

String disp;
for(int i=0; i<31 ; i++)
disp = disp + Integer.toString(i);

JOptionPane.showMessageDialog(null, disp);

给出的错误:

Calendar.java:28: 错误:变量 disp 可能尚未初始化 JOptionPane.showMessageDialog(null, disp);

您应该避免在循环中连接结果字符串,因为每次迭代都必须使用新部分创建旧字符串的副本。 而是使用StringBuilder及其append方法。

StringBuilder disp = new StringBuilder();

for (int i = 0; i < 31; i++)
    disp.append(i);

JOptionPane.showMessageDialog(null, disp);

无论如何,您的问题的原因是disp没有分配任何字符串,因此没有什么可以连接. 此外,在连接到字符串时,您不需要将其元素显式解析为字符串,负责该操作的代码将由编译器添加。 尝试

String disp = "";//assign value to `disp`
for (int i = 0; i < 31; i++)
    disp = disp + i;

有两点需要说明:

  • a) 初始化你的字符串:

     String disp = "";

    如果不初始化disp ,则它为null ,因此可能会导致麻烦。 编译器识别出disp未初始化,因此不会编译程序。

  • b) 你不需要Integer.toString(...)

     for(int i = 0; i < 31 ; ++i) { disp = disp + i; }

    所有原语都可以自动转换为String 因此,在这种情况下,您可以通过Integer.toString(...)跳过转换。

最后一点:您可能希望使用StringBuilder来获得一些性能。 有关详细信息,请查看PshemoEran 的回答。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM