惭愧,一个Java基本问题

September 25th, 2004 7:39 pm

Java对所有对象型参数的传递都是传引用的(by reference),在传入的函数体内修改该对象会对指向该对象的所有instance进行修改。但如果是创建一个新instance给该对象呢?如:

Vector v = new Vector();

v.addElement(“a”);

change(v);

System.out.println(v.size());

..

private void change(vector v) {

v= new Vector();

}

最后的打印结果是1,即在函数内创建新实例的话并不影响函数体外的变量。这个sample是我在Fowler的Refactor一书里看到的,当时就写了个例子验证,果然。惭愧,写了这么多年程序,这个问题居然到今天才发现。

Leave a Reply

*