请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

对值传递和引用传递有点无法理解

把实例滞空,引用里的对象不受影响,感觉理解起来太抽象了,为什么不会受影响?

我理解之前对dog::eat()理解是,编译的时候,就已经把方法在内部构造成了,即使对dog=null,也无法改变dog::eat()里面定义好的函数实现结构。我这么曲解,才能好让自己接受。可接下来

test(list)中的list和sysout中的list有什么区别,为什么一个改变了,另一个会不受影响?难道一个是值传递,另一个传的不是值?这两个值之间为什么不关联?实例跟值、引用是什么关系?啥时候传的是值,啥时候传的是引用,传的是实例属于传值还是引用?

感觉有点懵了,基础漏洞顿时显现无疑,当然照着这么用,肯定没问题。我觉得这节,对于我这种基础薄弱的人来讲,要结合下值传递和引用传递捎带讲解些,可能更好理解。

正在回答

2回答

这确实是比较难理解的知识。本来讲webflux不需要讲这些的,但为了让同学们多学点东西多掌握一点干货,特意拿出来讲的。
记住,java里面没有传引用,都是穿值。这也是为什么内部类里面变量要final的原因,因为不是引用可能会被改,所以要变量是final的,确保不会修改都指向同一个地方。

0 回复 有任何疑惑可以回复我~
  • 提问者 Echo鑫 #1
    老师,既然java中都是传值的话,实例是不是也属于这传的值,那引用的作用是不是就只是去创造值(对象)?这传的值与引用之间是什么关系呢?
    回复 有任何疑惑可以回复我~ 2018-04-30 21:10:02
  • 晓风轻 回复 提问者 Echo鑫 #2
    java里面没有引用的引用,有些语言才有,就是在前面加个@或者&的。引用就是一个地址,实际上就是一个long类型。传值说的是传引用的时候,把引用的值复制了一遍,和传一个int/long是一样的。
    还不清楚的话,欢迎群里讨论。
    回复 有任何疑惑可以回复我~ 2018-05-22 22:37:37
  • 提问者 Echo鑫 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-05-23 11:32:39
zjg23 2019-06-05 17:48:15

https://stackoverflow.com/questions/33052917/why-can-method-reference-use-non-final-variables

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信