鉴于以下情况
public class MyClass {
private String my_string = "bbb";
public MyClass() {
this.my_string += testFunc();
System.out.print("my_string = " + this.my_string);
}
public String testFunc() {
this.my_string += "aaa";
return "ccc";
}
public static void main(String[] args) {
MyClass my_class = new MyClass();
}
}
输出:
my_string = bbbccc
预期:
my_string = bbbaaaccc
那么这是怎么回事? this.my_string += "aaa";
这行发生了什么?
最佳答案
this.my_string += testFunc();
与相同
this.my_string = this.my_string + testFunc();
所以:
this.my_string = "bbb" + testFunc();
testFunc()
可能会更改 this.my_string,但这并不重要,因为它返回 ccc
。所以它变成:
this.my_string = "bbb" + "ccc";
this.my_string
现在将更改为 bbbccc
,因此您之前将其更改为 bbbaaa
并不重要。输出是正确的。
关于java - 修改函数中的类变量和返回值时出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43469279/