阅读说明:
code中的注释号码与文档中的段落标号对应。
本程序意图在于说明当方法外的对象在调用方法的时候,是如何传递引用的。
主程序
import java.util.HashMap;
import java.util.Map;
public class Main1 {
public static void main(String[] args) {
Main1 m1 = new Main1();
Map<String, String> outterMap = new HashMap<String, String>();//1
outterMap.put("outterKey1", "outterValue1");//2
m1.newAInnerMap(outterMap);//3
System.out.println(outterMap.hashCode() + "==" + outterMap);//8
}
public void newAInnerMap(Map<String, String> innerMap) {//4
innerMap = new HashMap<String, String>();//5
innerMap.put("innerKey1", "innerValue1");//6
System.out.println(innerMap.hashCode() + "==" + innerMap);//7
}
}
1、新建一个outterMap
2、将一个键值对(outterKey1:outterValue1)放入outterMap,内存图如下:
3、调用m1对象的newAInnerMap方法
4、调用过程
a)建立临时变量innerMap
b)将outterMap的引用赋值给innerMap
5、innerMap指向新建的HashMap对象
6、将一个键值对(innerKey1:innerValue1)放入innerMap
7、输出innerMap的关键信息:32041982=={innerKey1=innerValue1}
8、退出m1对象的newAInnerMap方法,
输出outterMap的关键信息:155194038=={outterKey1=outterValue1}
outterMap的值从最开始就没有受到影响。