189 8069 5689

Java中到底是值传递还是引用传递

今天就跟大家聊聊有关Java中到底是值传递还是引用传递,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请雅安服务器托管、营销软件、网站建设、运河网站维护、网站推广。

最近,我在 stackoverflow 上,看到了一个有意思的题目。Java 中到底是“值传递”还是“引用传递”?

Java中到底是值传递还是引用传递

回答数很多,点赞数也很多。很快就吸引了我的注意力!

通过我个人对通篇文章的阅读,得出了 3 个普遍被大家误导的错误!

错误1:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。如果是个引用,就是引用传递。 

错误2:Java 是引用传递。 

错误3:传递的参数如果是普通类型,那就是值传递,如果是对象,那就是引用传递。

实际上,Java 中只有“值传递”!这并不是我一家之言,而是众多 stackoverflow 上众多网友的讨论的结果!

Java中到底是值传递还是引用传递

我选择了一个比较经典的答案,整理给大家!

Java中到底是值传递还是引用传递

最重要的一点理解是 Dog myDog,它实际上是指向“Dog”的指针。当我们调用 foo(myDog) 的时候,你实际上是将创建的对象的地址传递 Dog 给 foo 方法。

注意,Java 中的指针不是指地址。

现在假设 Dog 对象驻留在内存地址 是 42。这意味着我们将 42 传递给该方法。

参数 someDog 设置为值 42,在代码 “AAA” 处,someDog 跟随 Dog,它指向(Dog 地址 42 处的对象),要求Dog(地址为 42 的那个)将他的名字改为 Max。

在代码“BBB” 处,Dog 创建了一个新的。假设它所在地址是 74,我们将参数分配 someDog 给 74。

在代码“CCC” 处,someDog 跟随 Dog 它指向(Dog 地址 74 处的对象),要求 Dog(地址为 74 的那个)将他的名字改为 Rowlf。

然后,return 了。

Java 的工作方式与 C 完全相同。您可以分配指针,将指针传递给方法,按照方法中的指针操作并更改指向的数据。但是,您无法更改指针指向的位置。

Java 总是按值而不是通过引用传递参数。Java 把引用的地址当做值进行了传递,这么说,你应该就明白了!

看完上述内容,你们对Java中到底是值传递还是引用传递有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


网页标题:Java中到底是值传递还是引用传递
文章链接:http://cdxtjz.cn/article/gphsii.html

其他资讯