繁体   English   中英

对象初始化-Java

[英]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; 只是传递的参考aaa ,这意味着,这两个点对同一个对象。 您可以通过打印aaa的哈希码来验证这一点。

在第一种情况下A aa = a; aaa上调用hashCode()都会产生相同的结果,因为两者都指向同一个Object。

在第二种情况下A aa = new A(); 调用hashCode()会产生不同的结果,因为您正在创建A全新实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM