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

时间:2015-06-21 19:23:31

标签: java

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);

2 个答案:

答案 0 :(得分:3)

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

StringBuilder disp = new StringBuilder();

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

JOptionPane.showMessageDialog(null, disp);

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

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

答案 1 :(得分:0)

有两件事需要提及:

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

    String disp = ""; 
    

    如果您未初始化disp,则为null,因此可能会造成麻烦。编译器识别出disp未初始化,因此无法编译程序。

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

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

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

最后说明:您可能希望使用StringBuilder来获得一些性能。有关详细信息,请查看Pshemo'sEran's答案。