Я только что узнал, что если оператор return содержит операцию приращения, возврат будет выполнен первым, и значение будет возвращено до того, как оно будет увеличено. Если я увеличиваю сначала в отдельном заявлении, а затем вернусь, он работает как ожидалось.Оператор возврата Java с приращением - каково общее поведение?
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));
}
Что происходит с возвратом, что заставляет его иногда оценивать все выражение, а иногда нет? Это что-то особенное в том, как происходит операция приращения?
Если я пытаюсь:
private static int incrementAddZero(int a)
{
return a++ + addZero();
}
private static int addZero()
{
System.out.print("addZero executes");
return 0;
}
Операция инкремента еще не произошло, но я знаю, что метод addZero работает из-за заявления печати. Почему он не увеличивается до возврата, но выполняет метод addZero перед возвратом?
Надеюсь, что это имеет смысл. Спасибо много.
Это семантика оператора ++, если _after_ операнд. –
вам нужно понять, что означает ++. Это выражение всегда будет возвращать предыдущее значение. – awsome
Ах, конечно. Спасибо всем: D – DrH