Java 参考变量混淆

Java 参考变量混淆,java,equals,Java,Equals,它给出了输出false,因为t1和t2有两个不同的对象,并且== 只检查引用。这很好,但是当我这么做的时候 class Test { String name; Test(String name){ this.name = name; } public static void main(String args[]) { Test t1 = new Test("Rakesh"); Test t2 = new Test(

它给出了输出
false
,因为t1和t2有两个不同的对象,并且== 只检查引用。这很好,但是当我这么做的时候

class Test {

    String name;
    Test(String name){
        this.name = name;
    }
    public static void main(String args[]) {
        Test t1 = new Test("Rakesh");
        Test t2 = new Test("Rakesh");
        System.out.printLn(t1 == t2);
   }
}
tl输出返回
true


问题是,
t1
t2
是类
Test
的两个新对象,由
new
关键字创建。那么它的引用怎么可能相等呢?

当您分配
t1=t2
时,两个引用引用引用同一个对象(您在
Test t2=new Test(“Rakesh”);
中创建的第二个对象),因此
t1==t2
变为真


赋值后,由
testt1=newtest(“Rakesh”)创建的对象
不再有对它的引用,这意味着它可以被垃圾收集。

t1=t2
意味着
t1
t2
都指向同一个对象。也就是说
t1
现在指向或存储
t2
指向的对象的引用。因此
t1
t2
现在都指向同一个对象。因此它们的引用是相等的。

当您执行t1=t2时,您将对象t2分配到对象t1中,从而使它们成为相同的对象。在使用new关键字之前,是否将它们都创建为独立对象并不重要

本质上,您正在丢弃最初在t1中创建的对象,当时您将t2指定给该对象

t1=t2;