diff --git a/book/04-Operators.md b/book/04-Operators.md index 824cbef..dfa3de5 100644 --- a/book/04-Operators.md +++ b/book/04-Operators.md @@ -259,6 +259,44 @@ x = a * (-b); ## 自动递增和递减 +和 C 语言类似,Java 提供了许多快捷运算方式。快捷运算可使代码可读性,可写性都更强。其中包括递增 `++` 和递减 `--`,意为“增加或减少一个单位”。举个例子来说,假设 a 是一个 **int** 类型的值,则表达式 `++a` 就等价于 `a = a + 1`。 递增和递减运算符不仅可以修改变量,还可以生成变量的值。 + +每种类型的运算符,都有两个版本可供选用;通常将其称为“前缀版”和“后缀版”。“前递增”表示 `++` 运算符位于变量或表达式的前面;而“后递增”表示 `++` 运算符位于变量或表达式的后面。类似地,“前递减”意味着 `--` 运算符位于变量或表达式的前面;而“后递减”意味着 `--` 运算符位于变量或表达式的后面。对于前递增和前递减(如 `++a` 或 `--a`),会先执行递增/减运算,再返回值。而对于后递增和后递减(如 `a++` 或 `a--`),会先返回值,再执行递增/减运算。代码示例: + +```JAVA +// operators/AutoInc.java +// 演示 ++ 和 -- 运算符 +public class AutoInc { +public static void main(String[] args) { + int i = 1; + System.out.println("i: " + i); + System.out.println("++i: " + ++i); // 前递增 + System.out.println("i++: " + i++); // 后递增 + System.out.println("i: " + i); + System.out.println("--i: " + --i); // 前递减 + System.out.println("i--: " + i--); // 后递减 + System.out.println("i: " + i); + } +} +``` + +输出结果: + +``` +i: 1 +++i: 2 +i++: 2 +i: 3 +--i: 2 +i--: 2 +i: 1 +``` + +对于前缀形式,我们将在执行递增/减操作后获取值;使用后缀形式,我们将在执行递增/减操作之前获取值。它们是唯一具有“副作用”的运算符(除那些涉及赋值的以外) —— 它们既改变操作数又改变值。 + +C++ 名称来自于递增运算符,同时也代表着“比 C 更进一步”。在早期的 Java 演讲中,*Bill Joy*( Java 创建者之一)说“**Java = C ++ --**”(C++ 减减)。这意味着 Java 是在 C++ 的基础上减少了许多不必要的东西,因此语言更简单。随着进一步地学习,我们会发现 Java 的确有许多地方相对 C++ 来说更简便,但是在其他方面,难度并不会比 C++ 小多少。 + + ## 关系运算符