Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 哪一个是真正的物体?_Java_Class_Object_Instantiation - Fatal编程技术网

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};