JAVA不能传地址,引用本质上也不是地址。但JAVA也不是直接传对象。这么说吧,如果非要往C++上靠的话,JAVA在函数调用中传引用实际上是更类似于指针的,而和C++的引用没有任何相似之处。 尤其是JAVA中的数组,它是个对象,不是个const指针。这是JAVA和C++比较大的一个区别。 比如: String[] s = new String[3]; 这时s是一个对象,这个对象里面又有三个String对象。现在初始化的是对象s,但它里面的三个String仍然是null。这三个String要一个一个初始化: s[0] = new String("I love u"); ...
一个是传地址,一个是引用对象啊~
法内时要小心,因为在方法内对这个object的修改会”扩散“到
方法外部。同样,在Return是也要注意,如果把一个类内部的
field传递了出去,即使是一个private field,也会被”境外的反动
势力“修改,从而封装性被破坏。
而C++中的指针可以参加运算.
void methodA(AAA arg0[]){
}arg0你认为是传的地址,但它却也是个对象。这单纯用传地址或传对象都难完美的解释。一般的朋友只要记住java specification中的对象的规定就可以了。所以我的建议是,无论学什么语言都要以它的specification为主,不要过多对比两个语言在实现上的异同。更不能把自己对语言实现的猜测用到编程实践上去。当然正确的理解对编程实践是有很大帮助的。例如学了《深度探索C++》后就会发现某某是怎么实现的,为什么怎样实现,在编程中就会避免许多bug.大家以为如何?
尤其是JAVA中的数组,它是个对象,不是个const指针。这是JAVA和C++比较大的一个区别。
比如:
String[] s = new String[3];
这时s是一个对象,这个对象里面又有三个String对象。现在初始化的是对象s,但它里面的三个String仍然是null。这三个String要一个一个初始化:
s[0] = new String("I love u");
...