阅读说明: 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的值从最开始就没有受到影响。
