2013-03-18 48 views
-2

为什么java不支持通过引用? 是否有任何具体的原因呢?*为什么Java纯粹通过价值?

+1

你能举一个例子/文档说这个吗? – 2013-03-18 07:11:31

+0

@SnakesandCoffee - 说什么? Java使用纯粹通过价值?尝试链接的问题开始。或者Java教程。或任何一半体面的Java教科书。或者如果这对你来说还不够明确,试试JLS。 – 2013-03-19 00:36:19

+0

@StephenC我的评论发布之前很久没有添加链接 – 2013-03-19 01:09:41

回答

4

为什么java不支持通过引用?

Java is indeed pass-by-value。但是,您仍然可以将对象引用传递给方法。即使引用是按值传递的,但总体效果几乎与传引用无法区分。

不支持的是对基本类型的引用。

+0

+1为'总体'效应陈述。我无法形成一个连贯的句子,可以告诉我想告诉我什么 – 2013-03-18 07:16:02

+1

“整体效果与传引用无法区分”当然不是。这是非常明显的 - 通过引用传递,您可以随时在函数内部分配一个引用参数,并且它会执行相同的操作,就像您为传入的变量赋值(即用'=')调用范围。这是你无法用像Java这样的按价值传递语言来做的事情。 – newacct 2013-03-18 18:55:31

+0

@newacct:这取决于语言。举例来说,C++具有传递引用的功能,但没有您所概述的语义(通过“分配给引用”,我假设您将引用重新绑定到不同的对象)。 – NPE 2013-03-18 20:02:26

0

其实在Java中的一切是按值传递。

当你说对象通过引用传递时,这意味着对象引用是通过值传递的。

这基本上是由Java设计人员做出的一个设计决策,它使语言变得简单,代码更易于调试。