我刚刚了解到,如果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)); }
return发生了什么,使它有时对整个表达式求值而有时不求值?这是关于增量操作如何发生的特殊之处吗?
如果我尝试:
private static int incrementAddZero(int a) { return a++ + addZero(); } private static int addZero() { System.out.print("addZero executes"); return 0; }
增量操作仍然没有发生,但是我知道addZero方法由于print语句而运行。为什么它在返回之前不增加,但是在返回之前确实执行addZero方法?
希望他有道理。非常感谢