Java引用传递的一个例子

class Candy{
    private Integer i;
    public void setI(Integer i) {
        this.i = i;
    }
    public Integer getI() {
        return i;
    }
    public static void main(String[] args) {
        Map<String,Object> map=new HashMap<String,Object>();
        Candy[] array=new Candy[1];
        Candy cd=new Candy();
        cd.setI(0);
        map.put("i", cd);
        array[0]=cd;
        array[0].setI(5);
        System.out.println("map:"+((Candy)map.get("i")).getI());
        System.out.println("array:"+array[0].getI());

    }
}
//output
//map:5
//array:5

在整个main方法中,只有一部new操作,即只有一个Candy对象(假定为A对象),array[0]=cd和map.put(“i”,cd)两个操作只是获取到指向A的引用cd的值,因此array[0]和map中key=”i”元素都只是指向A的引用,对array[0]和map中key=”i”元素进行操作,实质上就是对A操作,因此,array[0]和map.get(“i”)的结果始终是一致的。这便是一个简单的引用传递的小栗子。

posted @ 2016-11-14 17:14  wjc920  阅读(124)  评论(0编辑  收藏  举报