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”)的结果始终是一致的。这便是一个简单的引用传递的小栗子。