java值传递一瞥

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

猜你喜欢

转载自blog.csdn.net/heliangb46/article/details/77773118
今日推荐