我是 Java 新手。我编写了以下程序并得到了以下输出。
输出:
1
一个输出=
x=0 1 次测试..
x=1 1 陷阱..
如果字符串是不可变的,为什么我可以将“thisCycle”的值从“0”更改为“1”并打印出新的字符串值? 为什么我在“for”循环中得到两行输出? 为什么第一个字符串后面 append 了 2 个句点?
谢谢
import java.util.ArrayList;
public class Main {
/**
* @param args
*/
private static final ArrayList<String> ListContents=new ArrayList<String>();
public static void main(String[] args) {
// TODO Auto-generated method stub
String thisCycle="Cycle";
thisCycle="0";
// advance to next cycle
if (thisCycle.equals("0")) thisCycle="1";
System.out.println(thisCycle);
//
String a1="test";
String a2="gotcha";
ListContents.add(a1);
ListContents.add(a2);
StringBuilder a_out=new StringBuilder("");
System.out.println("a out="+a_out);
for(int x=0;ListContents.size()>x;x++) {
a_out.delete(0, a_out.length()+1);
if (thisCycle.equals("0")) a_out.append(ListContents.get(x)).append(". ");
if (thisCycle.equals("1")) a_out.append(ListContents.get(x)).append(".. ");
System.out.println("x="+x+" "+thisCycle+" "+a_out);
}
}
}
最佳答案
字符串本身是不可变的,但您更改的是变量的字符串值,而不是字符串本身。这是一个重要的区别 - Java 中的所有内容都是通过引用完成的。
由于循环执行了两次,因此您得到了两行输出,因为 ListContents 中有两个元素。
关于java stringbuilder添加额外字符新手问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25875318/