gpt4 book ai didi

java - 方法中的对象和基元

转载 作者:行者123 更新时间:2023-12-01 07:15:42 25 4
gpt4 key购买 nike

请告知为什么用作方法参数的基元会复制其值,而对象则按原样使用?

最佳答案

在 Java 中,所有参数均按值传递 - 但在引用类型(即除基元以外的所有类型)的情况下,变量的值不是对象本身 - 它是一个引用到对象。因此,引用被复制到方法的参数中,因此它引用同一个对象。

请注意,这不仅仅适用于方法调用:

StringBuilder x = new StringBuilder();
StringBuilder y = x; // Copy the value of x, which is a *reference*

y.append("Hello");
System.out.println(x); // Prints "Hello"

这里,xy 引用同一个对象,即使它们是单独的变量。因此,当通过 y 变量通过 append 调用更改该对象的内容时,该更改也可以通过 x 变量看到。

我认为这有点像给某人你家的地址:如果我给两个人我的家庭地址,其中一个人把门漆成红色,那么当第二个人访问这所房子时,他们会也看到红色的门。我不是把我的房子给他们,而是给他们一个到达我家的方式。

有很多很多关于此的文章 - 尽管不幸的是有些文章会声称在 Java 中对象是通过引用传递的。它们不是——引用是按值传递的,正如我上面所说的。斯科特斯坦奇菲尔德有一个good article about this等等。

关于java - 方法中的对象和基元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3495753/

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