当前位置: 技术问答>java相关
Java中的对象互相赋值的问题
来源: 互联网 发布时间:2015-04-02
本文导语: 在JAVA中申请了两个对象,我想把其中一个对象直接赋值给另外一个对象行吗?跟C++的一样吗?我记得C++的对象赋值非常麻烦,牵涉到两个对象的指向内存块的问题。那么在JAVA中呢?该怎么使用呢?谢谢! ...
在JAVA中申请了两个对象,我想把其中一个对象直接赋值给另外一个对象行吗?跟C++的一样吗?我记得C++的对象赋值非常麻烦,牵涉到两个对象的指向内存块的问题。那么在JAVA中呢?该怎么使用呢?谢谢!
|
不知道你说的是复制一个对象呢?还是引用!
如果是复制:可以实现Cloneable接口,调用OBJECT.clone();
如果是引用:object newobject=oldobject就可以了!
如果是复制:可以实现Cloneable接口,调用OBJECT.clone();
如果是引用:object newobject=oldobject就可以了!
|
similar in Java, you are assigning object references, for example
class B {...}
class D extends B {...}
D d = new D();
B b = d;
//now b and d both point to the same instance, or same memory
You can only assign a child class' instance to a parent class' variable, otherwise, explicit casting is needed
class B {...}
class D extends B {...}
D d = new D();
B b = d;
//now b and d both point to the same instance, or same memory
You can only assign a child class' instance to a parent class' variable, otherwise, explicit casting is needed
|
pengji说得没错,其实这些东西书本上都有,你就不能自己认真的看看书么?
|
Java中的对象直接付值其实是传递引用。
即:
B.setX(2);
A=B;
B.setX(1);
int i=A.getX();
结果是i=1。
即:
B.setX(2);
A=B;
B.setX(1);
int i=A.getX();
结果是i=1。
|
哦!这不是和C++里的一样吗?
我记住了!
那这样可不可以呢?
B b = new B();
D d = b;//D d = (D)b
我记住了!
那这样可不可以呢?
B b = new B();
D d = b;//D d = (D)b
|
object newobject=oldobject的方法是指newobject 和oldobject指向同一个内存块.
|
java中的对象是按引用传递的,所以用“=”的方法是使两个对象指向同一块内存空间。
要是想再另开一块空间的话(也就是复制一份),那就用clone()方法即可。
要是想再另开一块空间的话(也就是复制一份),那就用clone()方法即可。
|
B b = new B();
D d = b;//D d = (D)b
这段代码要依情况而定。如果B是D的子类,那么没有问题。
否则,很可能连编译的时候都通不过。
D d = b;//D d = (D)b
这段代码要依情况而定。如果B是D的子类,那么没有问题。
否则,很可能连编译的时候都通不过。