我习惯在中执行以下操作C:
C
void main() { String zText = ""; fillString(zText); printf(zText); } void fillString(String zText) { zText += "foo"; }
输出为:
foo
但是,在Java中,这似乎不起作用。我认为是因为该String对象是复制的,而不是通过referenced传递的。我以为字符串是对象,总是通过引用传递。
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通常是最佳选择。