Java 哪一个是真正的物体?
因此,我在试图弄清楚某个Java 哪一个是真正的物体?,java,class,object,instantiation,Java,Class,Object,Instantiation,因此,我在试图弄清楚某个对象是否真的被创建了,或者它只是某种指针时遇到了一个问题 有人能帮我理解吗? 如果有帮助的话,我有这样的例子:) a和b是相同的实例,c应该是相同的书架,但是不同的实例v包含两个唯一的对象,其中一个对象在其中两次以不同的名称出现。您认为答案是什么,为什么?从编译代码开始。a、b和c是对对象的引用(而不是对象本身)。a和b引用同一个对象。c引用的对象应该是a和b引用的对象的副本。我真的认为是a和c,因为b与a相同,不使用新操作符实例化,并且方法clone()返回一个新对象。
对象是否真的被创建了,或者它只是某种指针时遇到了一个问题
有人能帮我理解吗?
如果有帮助的话,我有这样的例子:)
a
和b
是相同的实例,c
应该是相同的书架
,但是不同的实例v
包含两个唯一的对象,其中一个对象在其中两次以不同的名称出现。您认为答案是什么,为什么?从编译代码开始。a、b和c是对对象的引用(而不是对象本身)。a和b引用同一个对象。c引用的对象应该是a和b引用的对象的副本。我真的认为是a和c,因为b与a相同,不使用新操作符实例化,并且方法clone()返回一个新对象。但我不太清楚的是向量v..clone()应该返回一个新对象,但根据实现的不同,它可能返回相同的实例或引发异常。始终检查类是否实现了Cloneable
。是,它实现了:),并且也可以引发异常。:)所以只有a和c是唯一的对象(只是为了检查我是否理解正确)是的,尽管v
也是如此。@ClaudiaMendes不是。它们是对对象的引用a
和b
是对同一对象的两个引用c
是对另一个对象的引用,它是a
和b
引用的对象的副本(假设clone()
确实返回了副本)v
也是对对象(数组)的引用。这就是我的意思。请注意,您不能像在C++中那样在代码中包含对象本身,您总是在处理引用。
Bookshelf a = new Bookshelf(2);
Bookshelf b = a;
Bookshelf c = b.clone();
Bookshelf []v ={ a,b,c.clone};