新人初学java,遇到这样一个问题,前几日提了这样一个问题:
void foo(A a)
{
a = new A()
}
main:
A a = null;
foo(a)
这样是改变不了a的指向的,然后我理解了java是只有值传递,所以相当于这个传的A a被复制了一份,改变的指向,是改变的复制的指向,所以原来的没有变
然后:
Class b
{
A a
}
void foo(B b)
{
b.a =new B();
}
main
B.b = new B();
b.a = null;
foo(b)
在这里引用了下别人的例子,请多见谅
这里的b也是复制的,但是我理解的是虽然是复制的,但是b.a复制的是一个引用,所以这个b,a指向的是一个空间,这样我也是理解了,但是不懂得是java里这个值传递都是复制,如果是基本数据类型(int。。。。)直接复制我懂,但是对象呢,是怎么复制的,我知道有个深度拷贝和浅度拷贝,感觉这个和浅度拷贝有点像,但是不知道对不对,求教各位,谢谢