Java按值传递和按引用传递
这个问题在这里已经有了答案:
Java总是只传值 ,只是在这种情况下,HashMap的引用是按值传递的。 valueMap
引用与inputMap
相同的对象。
这就是为什么当你使用valueMap
添加一个键值对时,它会反映回inputMap
,因为两者都指向相同的HashMap对象。
Eng.Fouad的这个答案很好地解释了这个概念。
Java是通过价值传递的。 但你的怀疑是参考,甚至参考在Java通过价值。
所以通过参考值,地图就会生效。
你对通过价值传递感到困惑。 按值传递的意义引用中的值传递。
当调用useDifferentMap(inputMap)
,将inputMap
分配给参数Map<String, String> valueMap
:
Map<String, String> valueMap = inputMap;
赋值之后,两个引用inputMap
和valueMap
现在引用内存中的同一个对象,因此通过一个引用修改该对象将反映到另一个引用。