我有Estado课程,如:
public class Estado implements Comparable {
public int x;
public int y;
.
.
.
public boolean equals(Object x) {
Estado e = (Estado) x;
return this.x==e.x && this.y==e.y;
}
}
该行
返回this.x == e.x&& this.y == e.y;
办?
答案 0 :(得分:3)
return ...;
表示"评估...
并退出该函数,使得结果值成为函数的返回值。"
所以让我们分解一下:
this.x==e.x
==
是equality operator。该行检查以查看this.x
是否等于e.x
(并且this.y==e.y
对y
s执行相同操作。
让我们调用x
支票xResult
的结果以及y
支票yResult
的结果。
接下来,我们有&&
:
xResult && yResult
&&
是一个布尔值" AND"运算符(规范称之为"Conditional-And operator"):如果它的两个操作数都是true
,则true
false
如果其中任何一个是false
true
}。
因此,如果两个条件都为真,函数将返回false
,如果任一条件为假,则返回Estado e = (Estado) x;
。
旁注:正如chrylis在评论中指出的那样,该函数可以另一种方式终止:称为exception的东西。函数的第一行Estado
可能会"抛出" (cause)如果传递给函数的参数确实引用了一个对象,但该对象不是(Estado)x
对象(因此" cast" null
是无效);如果传递给函数的参数是return
(没有引用任何对象),那么您询问的行可能会抛出异常。在函数内抛出异常而不是"捕获"通过函数中的代码,函数停止运行,但不是通过{{1}}语句。