我的理解:
Hashtable hashTemp = new Hashtable();//分配了新的地址而原来hashIn的地址内容并没有变化,
改成
Hashtable hashTemp =hashIn;
hashTemp.clear(); //new Hashtable(); hashTemp.put("1","x1");
hashTemp.put("2","x2");
hashTemp.put("3","x3");
hashIn = hashTemp;
试一下,看看内容变不变
Hashtable hashTemp = new Hashtable();//分配了新的地址而原来hashIn的地址内容并没有变化,
改成
Hashtable hashTemp =hashIn;
hashTemp.clear(); //new Hashtable(); hashTemp.put("1","x1");
hashTemp.put("2","x2");
hashTemp.put("3","x3");
hashIn = hashTemp;
试一下,看看内容变不变
hashIn = hashTemp;改后的意思就是将hashIn的一个引用给了hashTemp
然后改变了其内容
但是其返回原来的值
要先remove在put
错了
重要的是在你用方法public void setHasValue(Hashtable hashIn)时此参数是值传递当你赋值时hashIn = hashTemp只是传递原来setHasValue(hasInit);中hasInit的副本而没改变原来hasInit这样就可以import java.util.*;public class TestUTILHT001{ private int iReturn = 0; public TestUTILHT001() {
} public static void main(String args[]){ Hashtable hasInit = new Hashtable();
TestUTILHT001 t = new TestUTILHT001();
hasInit.put("1","1");
hasInit.put("2","2");
hasInit.put("3","3"); System.out.println("The..... hashtable init value is :");
System.out.println(hasInit);
Hashtable hashTemp = new Hashtable(); hashTemp.put("1","x1");
hashTemp.put("2","x2");
hashTemp.put("3","x3");
hasInit =(Hashtable) hashTemp;
//TestUTILHT001.setHasValue(hasInit); System.out.println("Thefffffffffffffffffs hashtable finally value is :");
System.out.println(hasInit); //return this.iReturn;
} /*public static void setHasValue(Hashtable hashIn){ System.out.println("In Method , The value of Init Hashtable : ");
System.out.println( hashIn); Hashtable hashTemp = new Hashtable(); hashTemp.put("1","x1");
hashTemp.put("2","x2");
hashTemp.put("3","x3");
hashIn =(Hashtable) hashTemp; System.out.println("In/////????/ Method , The sawp value of Hashtable : ");
System.out.println( hashIn); }*/}
“你用方法public void setHasValue(Hashtable hashIn)时此参数是值传递当你赋值时hashIn = hashTemp只是传递原来setHasValue(hasInit);中hasInit的副本“
我传递的是 Hashtable ,应该是传地址的,怎么会是传递hasInit的副本呢? 那不变成了传值了吗?
请指教!!!
谢谢! 清楚了!
接分吧!虽然少了点!