我刚刚了解到,如果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方法?
希望他有道理。非常感谢