每个人都解释了为什么它不起作用,但没有人解释如何使它工作。最简单的选择是使用:
String changeString() {
return "Hello world";
}
main() {
String myStr = new String("");
myStr = changeString();
}
尽管方法名称在这里用词不当。如果你要使用你最初的想法,你需要这样的东西:
void changeString(ChangeableString str) {
str.changeTo("Hello world");
}
main() {
ChangeableString myStr = new ChangeableString("");
changeString(myStr);
}
您的类可能如下所示:ChangeableString
class ChangeableString {
String str;
public ChangeableString(String str) {
this.str = str;
}
public void changeTo(String newStr) {
str = newStr;
}
public String toString() {
return str;
}
}
关于参考文献的快速课程:
在Java方法中,所有内容都是按值传递的。这包括引用。这可以通过以下两种不同的方法来说明:
void doNothing(Thing obj) {
obj = new Something();
}
void doSomething(Thing obj) {
obj.changeMe();
}
如果从调用(或从任何位置调用),则不会在被调用方中更改,因为会创建一个新的引用,并在方法的作用域中将该新引用分配给该引用。doNothing(obj)
main()
obj
doNothing
Thing
obj
另一方面,在你调用中,并且取消引用 - 这是通过值传递的 - 并更改它。doSomething
obj.changeMe()
obj