SAR*_*SAR 9 java hashmap pass-by-reference pass-by-value
我已经做了以下示例来检查我的知识
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);
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
original Map : 1 {initial=S, firstName=xxxx}
useDifferentMap : {lastName=yyyy, initial=S, firstName=xxxx}
original Map : 2 {lastName=yyyy, initial=S, firstName=xxxx}
Run Code Online (Sandbox Code Playgroud)
此方法useDifferentMap获取地图并更改值并返回相同的值.修改后的地图将包含修改后的值,其范围为useDifferentMap方法的本地范围.
我的问题是,如果java是通过值传递,修改后的值不应该在原始地图中受到影响.
所以java传递值或通过引用传递???
谢谢
Java是按值传递的。 但是您的疑问在于是否引用了引用,即Java中的引用是否按值传递。
因此,通过了参考值,地图生效了。
您对“按价值传递”一词感到困惑。按值传递按意义传递的值。