java - 为什么对象 "person1"和对象 "person2"是相同的?

标签 java object pseudocode

在此程序中,每当您更改 person1 或 person 3 时,它们都会包含相同的值。我尝试用伪代码完成每个步骤,但我迷失了这两个对象始终相等背后的推理。您能帮忙解释一下这些步骤吗?我真的很想了解。感谢您抽出时间。

public class References1
{
    public static void main (String[] args)
    {
        Person person1 = new Person ("Rachel", 6);
        Person person2 = new Person ("Elly", 4);
        Person person3 = new Person ("Sarah", 19);

        System.out.println ("\nThe three original people...");
        System.out.println (person1 + ", " + person2 + ", " + person3);

        // Reassign people
        person1 = person2;
        person2 = person3;
        person3 = person1;


        System.out.println("\nThe three people reassigned...");
        System.out.println (person1 + ", " + person2 + ", " + person3);

        System.out.println();
        System.out.println ("Changing the second name to Bozo...");
        person2.changeName ("Bozo");
        System.out.println (person1 + ", " + person2 + ", " + person3);

        System.out.println();
        System.out.println ("Changing the third name to Clarabelle...");

        person3.changeName ("Clarabelle");
        System.out.println (person1 + ", " + person2 + ", " + person3);
        System.out.println();
        System.out.println ("Changing the first name to Harpo...");
        person1.changeName("Harpo");
        System.out.println (person1 + ", " + person2 + ", " + person3);
    }
}

最佳答案

这些是导致您的问题的行:

// Reassign people
person1 = person2;
person2 = person3;
person3 = person1;

如果变量具有以下起始值:

person1 = "A";
person2 = "B";
person3 = "C";

...然后你通过代码运行它:

person1 = person2 -> person1 is now set to "B" (the value "A" is discarded)

person2 = person3 -> person2 is now set to "C"

person3 = person1 -> person3 is now set to the value of person1 which is "B"

现在变量 person1 和 person3 设置为同一个对象。

关于java - 为什么对象 "person1"和对象 "person2"是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26856748/

相关文章:

java - WebView 中的 Youtube 视频无法自动播放

java - 如何修改a的字段的字段....如link.next.next.next(.next*n) n次

java - 如何在特定文件夹中添加文件(在 ZIP 中)

json - 使用 jq,将对象数组转换为具有命名键的对象

javascript - Vue : Implementing Vue table search

c++ - 将对象传递给另一个类的构造函数

algorithm - 这个在图中寻找最大独立集的算法是否正确?

java - 在 Google App Engine 上托管 JSP?

tdd - 伪代码编程过程与测试驱动开发

algorithm - 字符串算法作业/面试类问题