Java意外增量

时间:2015-04-17 01:44:41

标签: java increment

输出

5

6

7

为什么第一次打印5而不是6? return语句不应该像它返回的那样递增吗?

public class Bravo
{
  protected static int varBravo = 5; 

  protected static int add()
  {
    return varBravo++;
  }
}

public class Alpha
{
    public static void main(String[] args)
    {
      System.out.println(Bravo.add());
      System.out.println(Bravo.add());
      System.out.println(Bravo.add());
    }
}

我得到“预期”行为的唯一时间是我

varBravo++;

return varBravo;

打印

6

7

8

4 个答案:

答案 0 :(得分:3)

return varBravo++;做的是它首先执行语句(返回),然后递增变量。要实现你想要的(增量,然后返回),你可以做上面提到的:

varBravo++;
return varBravo;

或:

return ++varBravo;

这会增加变量,然后执行语句。

答案 1 :(得分:0)

啊经典的预增量后增量问题。 x++增加x,但返回的值是增量前x 的值。

答案 2 :(得分:0)

原因是您使用的是return varBravo++而不是return ++varBravovarBravo++记住值,增加变量,然后返回记住的值,而++varBravo首先递增变量,然后返回其值。

答案 3 :(得分:0)

不确定我是否正确。返回后,++运算符可能会被执行。试试return (varBravo++)。不确定Java是否有++varBravo,这是你在C中的表现。