【发布时间】:2013-10-13 05:20:04
【问题描述】:
好的,那么当你这样做时会发生什么。
A a1=new A();
A a2=new A();
A a3=new A();
我上传了两张关于我想象中的样子的图片。你能告诉我哪张照片是真的吗?
第一张图片:
第二张图:
我一直以为第一张是真的,但现在我真的不知道,我怀疑第二张是真的。
另外,你能向我解释一下每一方的作用吗? 比如,“A a1”是做什么的,“new A()”是做什么的?
谢谢。
【问题讨论】:
-
任何时候你看到
new,它都是一个新对象,一个新引用。 -
第二张图片是有效的表示。
new A();在堆的某处创建一个内存实例。您声明了多个变量并分别初始化它们。这些变量中的每一个都持有对每个内存实例的引用。 -
我认为您应该更仔细地阅读类和对象的含义。大多数情况下,第二张图片是正确的。每次使用
new时,您都会创建该类的新实例,因此即使它与其他实例共享公共属性,它仍然是唯一的。