Java Don';我不理解在方法中将对象用作参数的时间

Java Don';我不理解在方法中将对象用作参数的时间,java,object,methods,parameters,Java,Object,Methods,Parameters,刚刚谈到我需要学习如何在方法中将对象作为参数传递的部分。我对此有点困惑,需要你的帮助。在此之前,我已经了解了方法和构造函数重载。代码如下: class Test { int a, b; Test(int i, int j) { a = i; b = j; } // returns value true if object is equal to object which called method boolean equ

刚刚谈到我需要学习如何在方法中将对象作为参数传递的部分。我对此有点困惑,需要你的帮助。在此之前,我已经了解了方法和构造函数重载。代码如下:

class Test {
    int a, b;

    Test(int i, int j) {
        a = i;
        b = j;
    }

    // returns value true if object is equal to object which called method
    boolean equals(Test o) {
        if (o.a == a && o.b == b) {
            return true;
        } else {
            return false;
        }
    }
}


public class ProslediObjekat {
    public static void main(String[] args) {
        Test ob1 = new Test(100, 22);
        Test ob2 = new Test(100, 22);
        Test ob3 = new Test(-1, -1);

        System.out.println("ob1 == ob2: " + ob1.equals(ob2));
        System.out.println("ob1 == ob3: " + ob1.equals(ob3));

    }
}
我知道我们首先创建了三个对象,并给它们一些值。 然后,让我困惑的部分是我们做这个
测试o
参数时的部分。我从来没有使用对象作为参数,所以我不明白我们是如何制作这个对象的?我只知道这个对象是参数。需要帮助了解此部分中发生的情况(测试o)

然后,这部分:
ob1.equals(ob2)
,values
a
b
具有由构造函数设置的值,并且
o.a
o.b
具有作为对象
ob2
的参数发送的值,对吗?然后if语句必须检查这两个值是否相同。对吧?

我知道我们首先创建了三个对象,并给它们一些值。那个么让我困惑的部分就是我们测试o参数时的部分。我从来没有使用对象作为参数,所以我不明白我们是如何制作这个对象的?我只知道这个对象是参数。需要帮助了解此部分中发生的情况(测试o)

下面的代码添加了注释,以便于进一步理解

// returns value true if object is equal to object which called method
boolean equals(Test o) //takes in object o of type Test as parameter
{
    if(o.a == a && o.b == b) //if member data a, b of parameter object is equal to calling object's value a, b.
    {
        return true; 
    }
    else
    {
        return false;
    }
   }
} 
然后,这一部分:ob1.equals(ob2),值a和b具有由构造函数设置的值,而o.a和o.b具有作为参数从对象ob2发送的值,对吗

正确,除非值从未初始化,例如
测试t4

然后if语句必须检查这两个值是否相同。对吧?


是。

看一些Java equals教程,例如,获取更好的understanding@Alexander非常感谢你!我明白你刚才给我写的一切。但是你能解释一下这部分吗:(测试o)我们在这里做了一个新的参数,这是对的吗?这和我们对变量(into)的处理是一样的。唯一的区别是,当我们创建对象时,我们的类型是我们的类的名称,在本例中是Test?“David Flanagan的o'Reilly的Java概括地说是最好的:'Java通过引用操作对象,但它通过值将对象引用传递给方法'。”因此,在主程序中,会复制
ob2
ob3
。当你把一个对象传递给一个方法时,它总是至少有两个引用。这让我有点困惑,但我希望只要我继续学习OOP和对象,我就会理解。也谢谢你的书,我会找的。感谢您的帮助:)我们制作了一个名为
o
的新参数,类型为
Test
,其功能范围为
等于(Test)
。但是,
o
引用传入的参数,例如
obj2