为啥这不会一遍又一遍地返回一个新值?爪哇

Posted

技术标签:

【中文标题】为啥这不会一遍又一遍地返回一个新值?爪哇【英文标题】:Why doesn't this return a new value over and over? java为什么这不会一遍又一遍地返回一个新值?爪哇 【发布时间】:2015-08-04 20:56:13 【问题描述】:
public static int someFunc(int a, int b)
    while(a <=b)
        a+= 1;
        return a;
    
    return b;

所以我期待它一遍又一遍地返回新值,但它没有,一旦我执行代码并亲眼看到,我意识到它与按值传递或按引用传递有关,这是我不知道的真懂!有人可以解释吗?

【问题讨论】:

为什么它会一遍又一遍地返回一个新值?你了解return 语句是什么以及做什么吗? 我正在编辑它,因为它对问题没有意义。请不要重新编辑它。如果您不同意,您可以标记以供审核或发布在元数据上。不要在你的问题中加入噪音。阅读帮助中心。 @SotiriosDelimanolis 我相信我有,但由于我们有一个 while 循环,我很困惑,因为 while 循环的条件仍然为真,因此我期待 while 循环的主体能够被执行超过 return 语句停止执行它出现的方法。 @SotiriosDelimanolis 所以如果我写了以下 someFunc(int a, int b) if (a 【参考方案1】:

直接的问题是return 返回!之后就什么都不能执行了。您不能有一个有意义的循环,其中包含无条件返回。

至于另一个,没有。这不是问题,因为您返回 anew 值。您传入的a 保持不变,这是您所说的通过引用/值传递。 Java 是按值传递的。

public class JHelp 

    public static void main(String...args) 
        JHelp j = new JHelp();
        int a = 1;
        System.out.print(j.f(a));
        System.out.print(a);
    

    int f(int a ) 
        a += 1;
        return a;
    

会给你一个输出:

21

【讨论】:

【参考方案2】:

因为返回指令退出代码,因此方法完成了它的工作,一旦到达返回指令就需要再次迭代,但是如果没有到达返回指令,我会这样做。

【讨论】:

以上是关于为啥这不会一遍又一遍地返回一个新值?爪哇的主要内容,如果未能解决你的问题,请参考以下文章

为啥在反应的“useState”钩子中一遍又一遍地设置初始状态

Google Cloud Run 一遍又一遍地错误运行

为啥我的组件一遍又一遍地重新绘制而没有发生任何变化?

为啥我的 axios 使用 React.useEffect 一遍又一遍地从 Rails 后端获取调用?

据说随机 API 一遍又一遍地返回相同的东西

一遍又一遍地运行代码