何时在Java中使用post增量和pre增量

use*_*994 4 java increment pre-increment post-increment

我知道StackOverflow上有很多关于这个主题的问题.但我仍然有点困惑,不确定何时使用这些操作.我正在通过旧考试来学习考试.其中一种方法可以获得残疾人无障碍且可用的教室数量.我写了计数器方法,但不确定我是否应该预先增加或增加计数器.我很困惑它如何在方法中使用return语句.我仍然没有得到该方法将在下面返回的值.其他问题没有显示方法中的返回值,因此我很困惑它实际上是如何工作的.这是代码:

  public int howManyHandi()
{
    int counter= 0;
    for (int i = 0; i < _clsrms.length; i++){
        if (_clsrms[i].handicappedSuitable() && _clsrms[i].isAvailable()){
            ++counter;
        }
    }
    return counter;
}  
Run Code Online (Sandbox Code Playgroud)

Abh*_*kla 8

如果要在该表达式中使用变量的递增值,则使用PRE-increment.而POST递增在递增之前使用原始值.

每当您的代码遇到PRE增量时,它会增加内存中该变量的值,然后加载该值并继续读取表达式.

POST增量相反,它将该变量的值加载到内存中,然后递增该值并继续读取表达式.

为了更清楚,请考虑这一点

int i = counter++;
Run Code Online (Sandbox Code Playgroud)

相当于

int i = counter;
counter = counter + 1;
Run Code Online (Sandbox Code Playgroud)

鉴于

int i = ++counter;
Run Code Online (Sandbox Code Playgroud)

相当于

counter = counter + 1;
int i = counter;
Run Code Online (Sandbox Code Playgroud)

编辑:我的StackOverflow评论不起作用,所以我将在这里编辑它.

我在说什么,只有在表达式中使用该值时才有意义.

sum = 0
counter = 0;
sum = (++counter)+(++counter)+(counter++)
Run Code Online (Sandbox Code Playgroud)

评估为

sum = 0
counter = 0
//For first ++counter
counter = counter + 1
sum = counter

//For second ++counter
counter = counter + 1
sum = sum + counter

//For first counter++
sum = sum + counter
counter = counter + 1
Run Code Online (Sandbox Code Playgroud)