直接上代码吧
public class TestMap {
public static void main(String[] args) {
Map<String, Map<String, String>> map = new HashMap<String, Map<String,String>>();
Map<String, String> innerMap = new HashMap<>();
innerMap.put("inner1key", "inner1value");
innerMap.put("inner2key", "inner2value");
map.put("out", innerMap);
System.out.println(map);
TestMap.test(map);
System.out.println(map);
}
public static void test(Map<String, Map<String, String>> map){
Map<String, String> innerMap = new HashMap<>();
innerMap = map.get("out");
innerMap.clear();
}
}
输出
{out={inner1key=inner1value, inner2key=inner2value}}
{out={}}
public class TestBase {
public static void main(String[] args) {
int mainvalue = 100;
TestBase.test(mainvalue);
System.out.println("mainvalue"+mainvalue);
}
public static void test(int value){
value = 0;
System.out.println("test---value"+value);
}
}
输出
test---value0
mainvalue100
有没有发现问题呢?
当参数为基本数据类型时 我们的参数时按值传递的 当参数为非基本数据类型时 我们的参数传递是按引用传递的 即我们传递的只是对象地址