【问题标题】:What does the return line do? [closed]回线有什么作用? [关闭]
【发布时间】:2014-06-21 18:25:26
【问题描述】:

我有 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;

做吗?

【问题讨论】:

  • 什么是==&& 是什么? (提示:它们被称为运算符。查找它们。)
  • 它评估这个表达式并产生一个布尔值并返回计算值
  • 打印出来你就知道返回了什么
  • 还需要注意的是,您应该能够通过查看函数声明的预期返回值来判断函数返回值是什么,因此“public boolean equals(*){}”

标签: java return this


【解决方案1】:

return ...; 表示“评估... 并退出函数,将结果值作为函数的返回值。”

让我们分解一下:

this.x==e.x

== 是一个equality operator。该行检查this.x 是否等于e.xthis.y==e.yys 的作用相同)。

让我们调用x 检查的结果xResulty 检查的结果yResult

接下来,我们有&&

xResult && yResult

&& 是一个布尔“AND”运算符(规范称其为"Conditional-And operator"):如果它的两个操作数都是true,则它是true,如果它们中的任何一个是false,则false

因此,如果两个条件都为真,该函数将返回true,如果任一条件为假,则返回false


旁注:正如chrylis 在评论中指出的那样,函数还有另一种终止方式:称为exception 的东西。函数的第一行 Estado e = (Estado) x; 如果传递给函数的参数确实引用了一个对象,但该对象不是 Estado 对象(所以“cast” (Estado)x 无效);如果传递给函数的参数是null(不引用任何对象),您询问的行可能会引发异常。当函数内抛出异常并且没有被函数中的代码“捕获”时,函数会停止运行,但不会通过return 语句停止运行。

【讨论】:

  • 或者如果强制转换失败或参数为空则抛出异常。
  • @chrylis:非常正确。演员不在 OP 询问的线上,但你当然是对的,如果 enulle.x 会抛出 NullPointerException(如果参数是 @987654356 @)。
猜你喜欢
  • 1970-01-01
  • 2012-08-22
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 2020-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多