对象初始化-Java
我是Java新手 我想询问有关对象初始化的问题。首先,我要上课对象初始化-Java,java,class,oop,object,instance,Java,Class,Oop,Object,Instance,我是Java新手 我想询问有关对象初始化的问题。首先,我要上课 public class A { .... } 然后在主类中,实例化A类 A a = new A(); 现在的问题是,这两个代码是否相同 A aa = a; 及 aa指的是同一个对象a A aa = new A(); about语句创建了与A不同的类型A的新对象。不,它们完全不同 A aa = a; 然后aa和a引用内存中的同一对象 A aa = new A(); 那么aa是一个新对象。现在堆栈上有两个对象。
public class A {
....
}
然后在主类中,实例化A类
A a = new A();
现在的问题是,这两个代码是否相同
A aa = a;
及
aa指的是同一个对象a
A aa = new A();
about语句创建了与A不同的类型A的新对象。不,它们完全不同
A aa = a;
然后aa
和a
引用内存中的同一对象
A aa = new A();
那么aa是一个新对象。现在堆栈上有两个对象。不,它们是不同的。
而aaa=newa()代码>创建类型为a的新对象,
aa=A
只是将a
的引用传递给aa
,这意味着这两个指向同一对象。
您可以通过打印a
和aa
的哈希代码来验证这一点
在第一种情况下,A aa=A对aa
和a
调用hashCode()
将产生相同的结果,因为两者都指向同一个对象
在第二种情况下,aaaa=newa()代码>调用hashCode()
将产生不同的结果,因为您正在创建一个全新的a
实例
A aa = a
但是,将引用对象a
A aa = new A();
将使类型a的新对象不相同。在第一种情况下,两个引用指向同一对象,在第二种情况下,两个单独的a对象。
A aa = a
A aa = new A();