算术运算——自增和自减
Java 的自增运算符 ++ 和自减运算符 -- 继承自 C++,可以使得变量的值加 1 或减 1。但用在变量的前面还是后面,效果不一样。
核心规则
- 放在变量之后(
a++、a--):先使用变量当前的值参与其他运算,然后再让变量加 1(或减 1) - 放在变量之前(
++a、--a):先让变量加 1(或减 1),然后再使用变量新的值参与其他运算
如果单独使用(如
a++;或++a;),不与其他运算结合,那么在前在后效果完全一样。
++ 和 -- 只能用在变量上,不能用在字面值上:
int a = 2;
a++; // 正确
// 2++; // 编译报错,字面值不能用自增运算符Code language: JavaScript (javascript)
单独使用——前后无区别
int a = 1, b = 1;
a++;
b++;
System.out.println(a); // 输出 2
System.out.println(b); // 输出 2Code language: JavaScript (javascript)
参与赋值运算——前后有区别
int a = 1, b = 1;
int c = a++; // 先赋值(c=1),再自增(a变为2)
int d = ++b; // 先自增(b变为2),再赋值(d=2)
System.out.println(a); // 输出 2
System.out.println(b); // 输出 2
System.out.println(c); // 输出 1
System.out.println(d); // 输出 2Code language: JavaScript (javascript)
参与输出运算
int a = 6, b = 6;
System.out.println(a++); // 输出 6,然后 a 变为 7
System.out.println(a); // 输出 7
System.out.println(++b); // b 先变为 7,输出 7
System.out.println(b); // 输出 7Code language: JavaScript (javascript)
综合示例
public static void main(String[] args) {
int a;
a = 2;
a++; // 单独使用,a 变为 3
System.out.println(a); // 输出 3
++a; // 单独使用,a 变为 4
System.out.println(a); // 输出 4
int b = a++; // ++在后面:先赋值(b=4),再自增(a变为5)
System.out.println(a); // 输出 5
System.out.println(b); // 输出 4
int a1 = 4;
int b1 = ++a1; // ++在前面:先自增(a1变为5),再赋值(b1=5)
System.out.println(a1); // 输出 5
System.out.println(b1); // 输出 5
int x = 6, y = 4;
int z = x-- + ++y; // x-- 先用6再减为5;++y 先加为5再用5;6+5=11
System.out.println(z); // 输出 11
}Code language: JavaScript (javascript)
总结口诀
| 写法 | 含义 |
|---|---|
a++ | 先用后加 |
++a | 先加后用 |
a-- | 先用后减 |
--a | 先减后用 |
注意:自增自减运算符只能作用于变量,不能作用于字面值或常量。在实际开发中,建议避免在同一行代码中混合多个自增/自减运算,以免降低代码可读性。