【问题标题】:When to use post increment and pre increment in Java [duplicate]何时在 Java 中使用后自增和预自增 [重复]
【发布时间】:2016-05-25 06:19:27
【问题描述】:

我了解 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;
}  

【问题讨论】:

    标签: java increment post-increment pre-increment


    【解决方案1】:

    当您想在该表达式中使用变量的递增值时,使用 PRE-increment。而 POST-increment 在递增之前使用原始值。

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

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

    为了更清楚,考虑这个

    int i = counter++;
    

    等价于

    int i = counter;
    counter = counter + 1;
    

    鉴于

    int i = ++counter;
    

    等价于

    counter = counter + 1;
    int i = counter;
    

    编辑:我的 StackOverflow cmets 无法正常工作,所以我将在此处进行编辑。

    我的意思是,只有在表达式中使用该值时才重要。

    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
    

    【讨论】:

    • 所以你是说只有当我们将递增的变量分配给另一个变量时它才会真正有所作为?
    • 我希望没关系,我把它复制到我的笔记中以帮助我记住。
    • 非常感谢你解决了我一整天的疑惑:) 解释得非常清楚
    【解决方案2】:

    在您的示例中,这无关紧要,因为您对 ++counter 返回的值什么都不做。

    唯一不同的是当您使用 post/pre-increment 运算符返回的值时。

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

    【讨论】:

    • 但是让我们假设我们将在其他地方使用该方法返回的值。
    • @user1454994 没关系。 ++countercounter++ 都会增加 counter。由于您的方法返回counter,因此您使用的两个运算符中的哪一个都没有关系。
    • 只是为了澄清一下,如果我们将此方法的值分配给另一个变量,例如在驱动程序类中,并且我们想要打印可用的类的数量,它不会有任何区别?该变量将被分配计数器的值?
    • @user1454994 如果你的意思是int count = something.howManyHandi();,那么是的,在howManyHandi 中使用counter++++counter 都没有关系。另一方面,如果您的代码中的任何地方都有int variable = counter++;int variable = ++counter;,则variable 的值将根据您使用的增量运算符而有所不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 2016-02-09
    • 2011-01-23
    相关资源
    最近更新 更多