gpt4 book ai didi

java - 为什么java中方法的参数接受引用地址的副本?

转载 作者:行者123 更新时间:2023-12-02 09:48:47 26 4
gpt4 key购买 nike

所以这是一个关于jvm设计的问题,因为基本上java是按值传递的,而实际上传递到方法中的是对象的引用地址副本,那么为什么我们这样做而不是传递原始引用地址呢?这在实践中会造成任何麻烦吗?谢谢。

最佳答案

首先,要非常清楚在JAVA中一切都是PASS BY VALUE(也称为PASS BY COPY)。其次,希望您非常清楚,在 JAVA 中传递“引用”并不意味着传递某种指针(如在 C 中),它只是意味着传递“引用变量”的副本,该副本存储了存在于 JAVA 上的实际对象的地址堆。

传递地址的副本而不是传递原始地址,因为在 JAVA 中,由于语言的简单性、封装(安全性)等原因,所有内容都被构造为逐个副本传递,并且在 JAVA 中的任何地方都遵循这一点。

通过复制传递使语言变得更简单,在制作函数签名时你不必考虑指针之类的东西,这使得语言更加可爱。

此外,通过复制传递有助于封装,使语言更加安全,因为此步骤使方法无法修改其自身范围之外的变量。

还有一件事是引用(通过引用传递)可能会在语言中施加更多约束和规则。

--感谢您的提问。

关于java - 为什么java中方法的参数接受引用地址的副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56471889/

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