![]() |
1
7
它是通过val传递的,但在谈论对象时,传递的是引用的值,因此,如果对象是可变的(如示例中所示),则通过引用副本修改对象将修改参考底图对象。
在代码中,在“tiles”和“mTiles”中使用相同的参考值
或
或者类似的东西,所以你可以创建一个新的,而不是使用相同的ref。 我希望这有帮助。 编辑 当您更改pass by val中的ref时,原始值不受影响,即:
在此之后,原来的“hi”仍然是“hi”。在pass by ref中,它将是“再见” 以下是一些链接: http://www.javaranch.com/campfire/StoryPassBy.jsp Pass by reference or pass by value? http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html http://academic.regis.edu/dbahr/GeneralPages/IntroToProgramming/JavaPassByValue.htm http://www.jguru.com/faq/view.jsp?EID=430996
http://www.google.com.mx/search?sourceid=chrome&ie=UTF-8&q=java+is+pass+by+value |
![]() |
2
1
您不传递对象,而是传递对对象的引用,该引用是按值复制的。 |
![]() |
3
1
以下是一些Java参数传递语义的诊断示例:
对于基元类型:
编辑 仍然
相比之下,这个例子 我会给出同样的答案
相信我,我已经为>10年了,我已经 教 |
![]() |
4
0
下面是一个简短的测试:
无论您是克隆还是使用=,System.out.print都将如下所示:
这证明了克隆和数组是有害的组合,因为数组只存储指针!我仍然需要测试这是否适用于无数组对象……因为这意味着Java总是“按引用存储”(而“克隆”函数对于任何包含数组的对象来说都只是一个糟糕的笑话),而只有原语是真实值,没有引用!
虽然我们从学校就知道了:按值存储x按值传递(对于原语) 那么,我们都被编程老师骗了吗(甚至在大学里)?也许吧,但他们至少没有犯任何逻辑错误……所以这不是谎言,只是错了。
我用一个类编写了与上面相同的代码,首先是数据结构:
现在控制器:
无论我使用=还是clone(),测试结果都会是这样的:
现在我口袋里有了“主阵”,我可以用它立刻统治所有的物体!(这其实不是一件好事) 我总是对Java数组感到不安,但我说不出它是什么。现在我知道了,我感觉很好,因为从那时起我只使用数组作为对象的容器……但我发现自己非常惊讶它们在PHP等脚本语言中的重要性! 尽管如此,Java阵列对于线程之间的同步非常有用,因为您可以轻松地传递它们,并且仍然可以访问共享值。但是,来自PHP或C++的程序员或其他地方的程序员可能会遇到java阵列的一些问题。D 哦,我喜欢这篇文章: http://javadude.com/articles/passbyvalue.htm |
![]() |
Tono Nam · 无法在golang中通过引用修改对象 2 年前 |
![]() |
uzivanky · 课堂上不同的“this” 6 年前 |
![]() |
Henry Marshall · 通过引用替换JS对象[重构工作代码] 6 年前 |
|
user9441223 · 通过引用传递对象并将其存储为成员变量 6 年前 |
![]() |
Enryu · 参考变量参数vs局部参考变量[关闭] 6 年前 |
![]() |
Tryer · 计算不同类别对象的数量 7 年前 |