java - 修改函数中的类变量和返回值时出现奇怪的行为

标签 java android

鉴于以下情况

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/

相关文章:

java - 在 Jax-Rs Jersey 中存储 session 对象

android - 自动调整 TextView 大小以在 Canvas 上绘制

android - Activity 识别 API 无法连续工作

java - Android - 将图像复制到剪贴板,有人能做到这一点吗?

Java JDBC Mysql 连接只在 try catch 内部有效

java - Java IO 流中的同步方法

java - 多行文本框 Slick2d

java - Android Html5/java 应用程序 : mosync gallery upload & send email

android - API Callback_URL 无效调用

java - 定时器触发后唤醒 Android 屏幕