Разница здесь в постфиксных и префиксных операторах.
например:
int a = 1;
int b = a++; // sets b to to 1 THEN increments a.
// a now equals 2.
int c = ++a; // increments a THEN stores the value in c, c = 3.
вызов метода, который возвращает int ++, не будет делать то, что вы ожидаете. Это не то же самое, что иметь это:
while (expression) {
// code...
intValue++;
}
, поскольку в приведенном выше блоке кода приращение не передается в отдельную переменную, и полное приращение значения будет происходить до выхода из блока кода, постфикса или префикса.
public static int someMethod(int n) {
return n++;
}
тогда как кодовый блок выше вернет n, затем увеличит его позже. Но так как ваш код будет продолжать давать одно и то же значение int n, он будет возвращать то же значение обратно, поскольку он не увеличивает ваше значение, а скорее переменную, локальную для этого метода, n. Каждый раз, когда вы передаете новое значение, n сбрасывается и возвращает то же самое, что приводит к бесконечному циклу.