我习惯在C
中执行以下操作:
void main() {
String zText = "";
fillString(zText);
printf(zText);
}
void fillString(String zText) {
zText += "foo";
}
输出为:
foo
但是,在Java中,这似乎不起作用。我认为是因为
String
对象是复制的,而不是通过引用传递的。我以为字符串是对象,总是通过引用传递。这里发生了什么?
最佳答案
您有三种选择:
StringBuilder zText = new StringBuilder ();
void fillString(StringBuilder zText) { zText.append ("foo"); }
public class Container { public String data; }
void fillString(Container c) { c.data += "foo"; }
new String[] zText = new String[1];
zText[0] = "";
void fillString(String[] zText) { zText[0] += "foo"; }
从性能的角度来看,StringBuilder通常是最佳选择。