回归误解

时间:2017-07-26 11:13:45

标签: java return

感觉某种程度上我不明白使用"返回"价值,所以我会给你两个例子,也许有人会为我清楚。 这种方法有什么区别:

int giveSecret(){
return 42;
}
//code in between
int theSecret = life.giveSecret();
System.out.println(theSecret);

(我预期的控制台输出): 42

和这个方法:

void giveSecret(){
//code that "resets" variable to value 42
}
//code in between
int theSecret = life.giveSecret();
System.out.println(theSecret);

(我预期的控制台输出): 42

1 个答案:

答案 0 :(得分:1)

当然,语言可以像后一个例子一样工作。每个函数都可以有一个与之关联的全局变量,其中"结果"被储存了。您将调用该函数,然后从全局变量中读取结果。但是:

  1. 令人作呕。为什么需要另一个全球名称?为什么要以某种方式知道哪个变量与哪个函数相关联?

  2. 它不是线程安全的。多个线程可能同时调用该函数。现在,哪个线程的结果出现在全局变量中?

  3. 语言设计师很久以前就已经知道了这个问题,而且它已经停滞不前了。