【发布时间】:2013-12-02 13:38:01
【问题描述】:
我已经完成了以下示例来检查我的知识
import java.util.Map;
public class HashMap {
public static Map<String, String> useDifferentMap(Map<String, String> valueMap) {
valueMap.put("lastName", "yyyy");
return valueMap;
}
public static void main(String[] args) {
Map<String, String> inputMap = new java.util.HashMap<String, String>();
inputMap.put("firstName", "xxxx");
inputMap.put("initial", "S");
System.out.println("inputMap : 1 " + inputMap);
System.out.println("changeMe : " + useDifferentMap(inputMap));
System.out.println("inputMap : 2 " + inputMap);
}
}
输出是:
original Map : 1 {initial=S, firstName=xxxx}
useDifferentMap : {lastName=yyyy, initial=S, firstName=xxxx}
original Map : 2 {lastName=yyyy, initial=S, firstName=xxxx}
此方法useDifferentMap 获取地图并更改值并返回相同的值。
修改后的映射将包含修改后的值,并且它的范围是 useDifferentMap 方法的本地。
我的问题是,如果 java 是按值传递的,修改后的值不应该在原始映射中受到影响。
java是传值还是传引用???
谢谢
【问题讨论】:
-
反对的选民需要解释,这是有效的问题
-
仅在 SO 上就被询问和回答了大约 100 次(在“网络上的其他地方”就更少了),只需查看右侧的“相关”列表即可。这可能就是人们不赞成它的原因,因为“研究工作”会在这个网站上找到答案。
-
Java 总是
passed by value。由于无法传递对象,对象引用为passed by value
标签: java hashmap pass-by-reference pass-by-value