【问题标题】: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

标签: java pass-by-reference pass-by-value


【解决方案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】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-25
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多