【问题标题】:Object Initialization - Java对象初始化 - Java
【发布时间】:2014-04-29 08:59:36
【问题描述】:

我是 Java 新手。

我想问一下对象初始化。首先,我要上课。

public class A {

    ....

}

然后在主类中,实例化A类。

A a = new A();

现在的问题是,这两个代码是否相同?

A aa = a;

A aa = new A();

【问题讨论】:

  • 不一样 - 在第一种情况下 - 两个引用指向同一个对象,在第二种情况下,两个单独的 A 对象。

标签: java class oop object instance


【解决方案1】:
A aa = a 

将引用对象 a,但是

A aa = new A();

将创建一个 A 类型的新对象。

【讨论】:

    【解决方案2】:

    不,它们完全不同!

    A aa = a;
    

    那么aaa指的是内存中的同一个对象。

    A aa = new A();
    

    那么 aa 是一个新对象。现在堆栈上有两个对象。

    【讨论】:

      【解决方案3】:
      A a = new A();
      A aa = a;
      

      aa 指的是同一个对象 a。

      A aa = new A();
      

      about 语句创建了与 a 不同的 A 类型的新对象。

      【讨论】:

        【解决方案4】:

        不,它们是不同的。 当A aa = new A(); 创建一个类型为 A 的新对象时, A aa = a; 只是将a 的引用传递给aa,这意味着这两个指向同一个对象。 您可以通过打印aaa 的哈希码来验证这一点。

        在第一种情况下,A aa = a;aaa 上调用 hashCode() 将产生相同的结果,因为它们都指向同一个对象。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-15
          • 2013-06-27
          • 1970-01-01
          相关资源
          最近更新 更多