java值传递一瞥

来源:互联网 发布:什字镇,梁家咀村淘宝店 编辑:程序博客网 时间:2024/05/22 15:38

阅读说明:
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,内存图如下:
此时outterMap中会有一个键值对(outterKey1:outterValue1)
3、调用m1对象的newAInnerMap方法
4、调用过程
a)建立临时变量innerMap
b)将outterMap的引用赋值给innerMap
赋值过程只是将outterMap的引用赋值给innerMap这个临时变量
5、innerMap指向新建的HashMap对象
新建HashMap对象,并将引用赋值给innerMap
6、将一个键值对(innerKey1:innerValue1)放入innerMap
7、输出innerMap的关键信息:32041982=={innerKey1=innerValue1}
8、退出m1对象的newAInnerMap方法,
方法外,最开始的outterMap并未改变
输出outterMap的关键信息:155194038=={outterKey1=outterValue1}
outterMap的值从最开始就没有受到影响。