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

时间:2016-02-14 10:30:36

标签: java increment post-increment pre-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;
}  

2 个答案:

答案 0 :(得分:7)

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

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

POST-increment执行相反的操作,它将该变量的值加载到内存中,然后递增该值并继续读取表达式。

为了更清楚,请考虑这个

int i = counter++;

相当于

int i = counter;
counter = counter + 1;

鉴于

int i = ++counter;

相当于

counter = counter + 1;
int i = counter;

编辑:我的StackOverflow评论无效,所以我只是在这里编辑。

我在说什么,只有在表达中使用该值时才重要。

sum = 0
counter = 0;
sum = (++counter)+(++counter)+(counter++)

评估为

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

答案 1 :(得分:3)

在您的示例中,无关紧要,因为您对++counter返回的值不执行任何操作。

它唯一有效的时候是你使用post / pre-increment运算符返回的值。

例如,如果您有return counter++;return ++counter;语句,您的方法将根据您使用的运算符返回不同的结果。