区分:i++ 与 ++i

174 阅读3分钟

1.是什么

自增(Increment)是编程中常见的一种操作,用于将变量的值增加1。在大多数编程语言中,自增有两种形式:前缀自增(++i)后缀自增(i++)。这两种形式在表达式中的行为略有不同,主要区别在于自增操作发生的时机。

一般记忆:
  • 前缀自增(++i)先增加1后赋值
  • 后缀自增(i++)先赋值后增加1

让我们来看两道例题吧!(大家可以试着做做,做完后可以对答案喔)

例题①:

public class Test {
    public static void main(String[] args){
    int i = 9;
    i++;
    System.out.println(i);
    }
}

例题②:

public class Test {
    public static void main(String[] args){
    int i = 9;
    ++i;
    System.out.println(i);
    }
}

答案:例题①和②都是10

解释:例题①是先赋值后增加1,但是i++并没有赋值这步操作,因为没有变量接收**,**所以它直接自增1后输出(下面我会再举个例子进一步解释)

例题②:**先增加1后赋值,**自增1后输出来。

如果对例题①有困惑的小伙伴可以再看例题③:

public class Test {
    public static void main(String[] args){
    int i = 9;
    i = i++;
    System.out.println(i);
    }
}

答案:9

仔细对比发现:不同点在于**有没有变量,有变量的情况下,i++是先赋值后增加1,**所以i直接赋值就是9,在输出结果之后再增加1。

总结:看自增前是否有变量!!!

下面为了加强巩固,我们再看两道例题:

public class Example {
    public static void main(String[] args) {
        int a = 5;
        int b = a++; 
        System.out.println("a = " + a); 
        System.out.println("b = " + b); 
    }
}

答案:a=6,b=5。 b被赋值为a的当前值5,然后a自增为6

增加难度!!!

public class Example {
    public static void main(String[] args) {
        int i = 1;
        int j = i++ + ++i + i++ + ++i;
        System.out.println("i = " + i + ", j = " + j);
    }
}

答案:i=5, j=12

解释:

​编辑

#红色标记是步骤,蓝色圈圈是对应的值,j最后的结果是蓝色圈圈相加

1.1. 适用类型

  • 自增运算符(++)只能用于整数类型的变量,包括byteshortintlong等。它们不能用于浮点数(如floatdouble)或字符(char)类型的变量,因为这些类型的变量增加1在逻辑上可能不是简单的递增操作(特别是对于浮点数和字符)。

1.2. 注意事项

  • 自增运算符只能用于变量,不能用于常量或表达式的结果。例如,1++(x + 1)++都是非法的,因为它们试图对常量或表达式的结果进行自增操作。

好啦,相信大家都掌握好这些知识啦,还有什么建议或补充欢迎来评论区喔!