[英]Object Initialization - Java
我是Java新手。
我想问一下对象初始化。 首先,我上课。
public class A {
....
}
然后在主类中实例化A类。
A a = new A();
现在的问题是,这两个代码是否相同?
A aa = a;
和
A aa = new A();
A aa = a
将引用对象a,但是
A aa = new A();
将创建一个类型为A的新对象。
A a = new A();
A aa = a;
aa指的是同一对象。
A aa = new A();
关于语句创建了一个不同于a的类型A的新对象。
不,他们是完全不一样的!
A aa = a;
然后aa
和对内存中相同对象a
引用。
A aa = new A();
那么aa是一个新对象。 现在,您在堆栈上有两个对象。
不,他们不同。 而A aa = new A();
创建一个新的A类型的对象, A aa = a;
只是传递的参考a
至aa
,这意味着,这两个点对同一个对象。 您可以通过打印a
和aa
的哈希码来验证这一点。
在第一种情况下A aa = a;
在aa
和a
上调用hashCode()
都会产生相同的结果,因为两者都指向同一个Object。
在第二种情况下A aa = new A();
调用hashCode()
会产生不同的结果,因为您正在创建A
全新实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.