请教一个 Java 中传值和传址的问题

2020-11-23 11:25:23 +08:00
 uselessVisitor

请问一下,List不是每次新建的地址都是不一样的吗?为什么这样传递会提示这个提示呢?

然后不加返回值竟然可以修改 List 中的对象。。

convertList(items,record)这样直接就可以改变 items 的内容

请问下为什么呢?

2231 次点击
所在节点    Java
9 条回复
cubecube
2020-11-23 12:13:57 +08:00
几乎所有参数都是值传递,除了 cpp 里面的 ref
340244120w
2020-11-23 12:20:18 +08:00
Java 都是值传递,传递对象内存地址的拷贝
wysnylc
2020-11-23 12:23:11 +08:00
Java 只有值传递-https://blog.csdn.net/javazejian/article/details/51192130
能改变的原因是地址当成值传过去
uselessVisitor
2020-11-23 12:51:24 +08:00
@cubecube
@340244120w
@wysnylc
感谢。。大概是懂了。。
Jooooooooo
2020-11-23 13:07:25 +08:00
理解成把对象的地址传进去就好了
FrankHB
2020-11-23 13:15:52 +08:00
讲了多少遍了跟所谓传值相对的是传名……
所谓传引用说白了是传值的一种。
Java 都是传值但没直接把引用当对象的机制,算不上传引用,撑死了算传共享对象(call by sharing) 。能传引用 swap 还用什么 box 。
还有哪来的什么地址,是被什么垃圾来源坑了? hashcode 一样说明地址,什么逻辑?
xuanbg
2020-11-23 14:21:28 +08:00
变量的值和对象的值是两码事。
譬如:String a = "a";
变量 a 的值是指向字符串对象的地址,对象的值才是“a”,而不是变量 a 的值是"a"。
uselessVisitor
2020-11-23 18:26:15 +08:00
@FrankHB cxxn,哭了😭
EminemW
2020-11-23 19:57:44 +08:00
Java 都是传值,对象类型传的值是该对象的地址,基本类型传的值是该类型值的拷贝

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/728257

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX