任何人都可以通过以下代码帮助新手进入Java世界:
//Objects may be passed to methods
package Training;
public class Test {
int a, b;
Test(int i, int j) {
a = i;
b = j;
}
//Return true if o is equal to the invoking object
boolean equalTo(Test o) {
if(o.a == a && o.b == b) return true;
else return false;
}
}
class PassOb {
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.equalTo(ob2));
System.out.println("ob1 == ob3: " + ob1.equalTo(ob3));
}
}
有人可以解释一下这段代码中发生了什么,特别是
boolean equalTo(Test o) {
if(o.a == a && o.b == b) return true;
else return false;
代码块。
答案 0 :(得分:0)
boolean equalTo(Test o) {
if(o.a == a && o.b == b) return true;
else return false;
将this
对象与o
进行相等性比较 - 此处定义为“Test x equalsTo()测试y,当且仅当它们具有相同的a和b值时。” ==运算符可以比较int,因为它是一个原始的,不可变的类型。
o.a == a
:a值相同
&&
:AND
o.b == b
:b值相同。
由于运算符优先级规则,它是((o.a == a) && (o.b == b))
而不是((o.a == (a && o.b)) == b)
:==
在&&
之前绑定。这很幸运,因为后面的括号是无意义的 - 你不能用Java编写逻辑和两个整数。
(通常在Java中,我们实现Object.equals()
,而不是equalsTo()
,以实现此功能。)