java中,"对象引用"和"对象"问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中,"对象引用"和"对象"问题相关的知识,希望对你有一定的参考价值。

java中,"对象引用"和"对象"问题class a;
a test;
test=new a();
这个例子中
a test是引用对象a的意思吗?
new test()是创建对象a吗?所以是讲new a()创建的对象a赋值给a test引用对象a吗?

假如上面是对的
class b extends a;
a test1=new b();
a test1引用对象a,new b()创建的是对象b,那么test1指向的是谁?(ps:我知道向上转型和向下转型)

a只是保存了引用,也就是对象的地址,真正的对象就是new出来的那个
所以a 可以指向new a 也可以指向new b, 运行时会根据地址获取真正的对象
参考技术A 虽然不知道你在说啥,但是 test1 指向堆内存里的new b()

java,,"浅克隆,只复制一个对象 ,深克隆 对象和引用一起复制"有java实例吗?不理解啊

对只包含进本类型的类来说,无所谓深克隆。但是一个类包含集合类或者复杂的类,就要考虑二者的区别了。

class Student
private int id;
private Address address;
private ArrayList<Book> bookList;

对于以上类的一个对象a和克隆类 o来说:
浅克隆:
a !=o 但是 a.address == o.address, a.bookList == o.bookList
深克隆:
a !=o 但是 a.address != o.address, a.bookList != o.bookList
并且 bookList中的每个元素不是相同对象。
简言之, 浅克隆只复制本对象,深克隆除了本对象,其儿子、孙子、....都要克隆。
以上纯手敲,有错请包涵。
参考技术A 举例子:
一个猫,有年龄属性(int基本属性-克隆都一样)和一个(皮球)对象属性(克隆有区别)。
浅克隆一个猫,则第二只猫和第一只猫都指定了同一个皮球,即皮球本身没有被复制。内存中就一个皮球,两只猫用于同一个皮球引用地址,不管改变那只猫的皮球,另一只猫的皮球也跟着变。
深克隆
,第二只猫的皮球拥有和第一只猫一样的皮球(属性一样),但不是同一个对象,不是同一个引用。皮球互相独立,内存中有两个一样的皮球了,分别应用不同的皮球对象地址,把一只猫的皮球颜色改成红色,而另一猫的皮球还是原先的蓝色。追问

都很好,可是只能采纳一个,非常感谢

以上是关于java中,"对象引用"和"对象"问题的主要内容,如果未能解决你的问题,请参考以下文章

在Java中,在方法传值的时候是"引用传递",还是在任何用"="向对象变量赋值的时候是"引用传递"?

java 对象引用

java,,"浅克隆,只复制一个对象 ,深克隆 对象和引用一起复制"有java实例吗?不理解啊

关于java里返回对象的引用

在Java中,用作字符串比较的运算符" == "和".equals()"的区别?

Java对象"后事处理"那点事儿——垃圾回收