传递给方法的对象

时间:2015-05-07 15:51:43

标签: java

任何人都可以通过以下代码帮助新手进入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; 

代码块。

1 个答案:

答案 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(),以实现此功能。)