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)
,valuesa
和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
。