Java的对象即引用在头脑里太根深蒂固了,结果导致今天出了问题。如下的代码:
public boolean getElement(int index, Object object)
{
if(index < 1 || index > length)return false;
object = elem[index - 1];
return true;
}
天真的认为,可以通过object参数传回修改的值,结果却未能如愿。看来对象作为函数参数,也类似于C语言中的指针作为参数,并不一定在函数中的修改就一定能影响到实参的值。这里在函数中改变了object对象的引用(指向),因此不能影响到实参。对于Java中参数的传递做个简要总结:
(1)对于原始数据类型,也就是int、 long、char之类的类型,是传值的,假如你在方法中修改了值,方法调用结束后,那个变量的值没用改变。
(2)对于对象类型,也就是Object的子类,假如在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是假如把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。(这一点和C语言的指针参数太一样了)
因此开始的代码修改为如下:
public Object getElement(int index)
{
if(index < 1 || index > length)return null;
return elem[index - 1];
}