小编DrH*_*DrH的帖子

带增量的Java return语句-一般行为是什么?

我刚刚了解到,如果return语句包含一个递增操作,则该返回将首先执行,并且该值将在递增之前返回。如果我先在单独的语句中递增,然后返回,则它将按预期工作。

private static int incrementIntV1(int a)
{
   return a++;
}

private static int incrementIntV2(int a)
{
    a++;
    return a;
}

public static void main(String[] args)
{
    int b = 6;

    System.out.println("Increment in return: " + incrementIntV1(b));
    System.out.println("Increment first, then return: " + incrementIntV2(b));
    System.out.println("Increment with addZero: " + incrementAddZero(b));
}   
Run Code Online (Sandbox Code Playgroud)

return发生了什么,使它有时对整个表达式求值而有时不求值?这是关于增量操作如何发生的特殊之处吗?

如果我尝试:

private static int incrementAddZero(int a)
{
    return a++ + addZero();
}

private static int addZero()
{
    System.out.print("addZero executes");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

增量操作仍然没有发生,但是我知道addZero方法由于print语句而运行。为什么它在返回之前不增加,但是在返回之前确实执行addZero方法?

希望他有道理。非常感谢

java return increment order-of-execution

5
推荐指数
1
解决办法
5293
查看次数

标签 统计

increment ×1

java ×1

order-of-execution ×1

return ×1