gpt4 book ai didi

Java 类变量等于相同的值

转载 作者:行者123 更新时间:2023-11-29 10:18:22 24 4
gpt4 key购买 nike

我正在准备认证考试,但我不明白这段代码:

主要内容:

public class TestStudent {
public static void main(String[] args) {
Student bob = new Student();
Student jian = new Student();
bob.name = "Bob";
bob.age = 19;
jian = bob;
jian.name = "Jian";
System.out.println("Bob's Name: " + bob.name);
}
}

类:

public class Student {
public String name = "";
public int age = 0;
public String major = "Undeclared";
}

为什么会输出“Bob's Name: Jian”?

Bob.name 从未设置为 Jian。显然一定是因为“jian = bob;”但我认为这只会将 jian 变量设置为与 bob 相同。这个概念叫什么,在 Java 教程中在哪里解释?

最佳答案

Java 中的赋值不复制对象,它们复制引用。在这个任务之后

jian = bob;

你的jian不再指向你分配给jianStudent对象,它和一样bob,为同一对象创建一个别名。原来的 jian 现在已经无可挽回地丢失了,可以进行垃圾回收了。

下面的判断

    jian.name = "Jian";

通过其 jian 别名覆盖 bob 变量中的名称,导致您看到的结果。

关于Java 类变量等于相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11890217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com