【发布时间】:2016-02-09 02:15:38
【问题描述】:
有人曾经发布过这段简短的代码。
public void method1() {
int value = 5 + method2(5);
System.out.println(value);
}
public int method2(int param) {
return param + 5;
}
我的问题是关于 return 声明及其工作原理。 当我们将 5 的值发送到方法 2 时,我们是否真的这样做了:
return 5 + 5 到 method1,在方法 1 中计算 5 + 5 是多少?
所以我的意思是它在视觉上看起来像:
return 5 + 5int value = 5 + (5 + 5)
它将在第一种方法中完成所有计算。还是将 5 发送到方法 2,在 method2、return 10 到 method1 中计算 5 + 5,
并将值设置为 15。
所以它看起来像这样:
- 在方法 2 中计算 5 + 5
- 返回 10
- int 值 = 5 + 10
我不完全确定我对此的分析是否正确,但我问的原因是因为我在使用 toString() 方法时遇到了一些混淆。
当我在子类中覆盖 toString 方法,并调用对象类的 toString 方法(通过调用super.toString()),它返回一个字符串。
我对为什么该字符串包含对子类而不是 Object 类的引用感到困惑。所以我认为我们会有一个包含对象类名称的字符串,但我有一个包含子类名称的字符串。我唯一的结论是,这与如何评估回报有关?
抱歉,如果这有点难以理解。有点难以用言语表达。让我知道你们的想法,并保持健康!
【问题讨论】:
-
“我不完全确定我对此的分析是否正确,但我问的原因是因为我在使用 toString() 方法时遇到了一些困惑。”恕我直言,当您的困惑与继承情况下的
toString相关时,询问有关以基本静态方式使用ints 的方法的问题没有多大意义。
标签: java return expression keyword operator-precedence