导入
简单的 Java 数学运算
本节课介绍了Java中常用的基本运算符。例如,讲解了减法、加法、除法和乘法运算。
介绍
Java中的数学运算非常简单。请记住,Java的数学运算遵循特定的顺序,与中学数学类似。
例如,乘法和除法优先于加法和减法。通过使用括号可以改变这些运算的执行顺序。
Java中的运算符
Java中的算术运算符如下所示。
| 符号 | 算术运算符 |
|---|---|
| + | 加法 |
| - | 减法 |
| / | 除法 |
| * | 乘法 |
| % | 取模(求余) |
| ++ | 后缀和前缀自增 |
| -- | 后缀和前缀自减 |
示例
让我们看看在Java编程中如何使用这些运算符。
1public class Operators { 2 public static void main(String[] args) { 3 int answer; 4 5 System.out.println("加法"); 6 int add = 20; 7 8 System.out.println("初始值: " + add); 9 answer = add + 2; 10 System.out.println("add + 2 = " + answer); 11 answer = add; 12 System.out.println("add = " + answer); 13 System.out.println(); 14 15 System.out.println("减法"); 16 int sub = 15; 17 18 System.out.println("初始值: " + sub); 19 System.out.println("sub - 4 = " + (sub - 4)); 20 System.out.println("sub = " + sub); 21 System.out.println(); 22 23 System.out.println("乘法"); 24 int mult = 25; 25 26 System.out.println("初始值: " + mult); 27 answer = mult * 3; 28 System.out.println("mult * 3 = " + answer); 29 answer = mult; 30 System.out.println("mult = " + mult); 31 System.out.println(); 32 33 System.out.println("整数除法"); 34 int div_int = 15; 35 36 System.out.println("初始值: " + div_int); 37 System.out.println("div_int / 2 = " + (div_int / 2)); 38 System.out.println("div_int = " + div_int); 39 System.out.println(); 40 41 System.out.println("取模(求余)"); 42 int rem = 5; 43 44 System.out.println("初始值: " + rem); 45 answer = rem % 2; 46 System.out.println("rem % 2 = " + answer); 47 answer = rem; 48 System.out.println("rem = " + answer); 49 System.out.println(); 50 51 System.out.println("自增(前置)"); 52 int pre_inc = 5; 53 54 System.out.println("初始值: " + pre_inc); 55 System.out.println("++pre_inc = " + (++pre_inc)); 56 System.out.println("pre_inc = " + pre_inc); 57 System.out.println(); 58 59 System.out.println("自减(前置)"); 60 int pre_dec = 5; 61 62 System.out.println("初始值: " + pre_dec); 63 answer = --pre_dec; 64 System.out.println("--pre_dec = " + answer); 65 answer = pre_dec; 66 System.out.println("pre_dec = " + answer); 67 System.out.println(); 68 69 System.out.println("自增(后置)"); 70 int post_inc = 5; 71 72 System.out.println("初始值: " + post_inc); 73 System.out.println("post_inc++ = " + (post_inc++)); 74 System.out.println("post_inc = " + post_inc); 75 System.out.println(); 76 77 System.out.println("自减(后置)"); 78 int post_dec = 5; 79 80 System.out.println("初始值: " + post_dec); 81 answer = post_dec--; 82 System.out.println("post_dec-- = " + answer); 83 answer = post_dec; 84 System.out.println("post_dec = " + answer); 85 System.out.println(); 86 } 87}
运算符优先级
运算符优先级决定了当表达式中包含多个运算符时,各运算的执行顺序。在数学运算中,优先级遵循BODMAS规则,即:括号、幂次、除法、乘法、加法、减法。下面通过一个例子来验证这一点!
为了演示,我们设定以下变量:x=5,y=10,z=7,w=6。现在用这些变量来计算下面的表达式。
-
(x - z) + y * y- 首先计算括号内的
(x - z),结果为 -2 - 接着计算
y * y,根据BODMAS规则,乘法优先于加法,结果为 100 - 最后计算
-2 + 100,结果为 98
- 首先计算括号内的
-
w / y + (x * z)- 首先计算
x * z,结果为 35 - 然后进行除法
w / y。注意,由于变量是整数类型,结果也会是整数,因此结果为 0(整型会向下取整) - 最后计算
0 + 35,结果为 35
- 首先计算
现在让我们运行下面的代码,验证是否正确!
1public class Oper_Prec { 2 public static void main(String[] args) { 3 int x = 5; 4 int y = 10; 5 int z = 7; 6 int w = 6; 7 int answer; 8 9 System.out.println("x: " + x); 10 System.out.println("y: " + y); 11 System.out.println("z: " + z); 12 System.out.println("w: " + w); 13 14 System.out.println("计算包含多个运算符的表达式"); 15 16 System.out.println("(x-z) + y*y = " + ((x - z) + y * y)); 17 answer = (w / y + (x * z)); 18 19 System.out.println("w/y + (x*z) = " + answer); 20 } 21}
运算符结合性
运算符结合性决定了在表达式中,当多个运算符具有相同优先级时(如 1 + 2 - 5),它们将如何被计算。加法 + 和减法 - 具有左结合性。
x + y - z- 先计算
x + y,结果为 15 - 然后计算
15 - 7,最终结果为 8
- 先计算
运行下面的代码,查看输出结果!
1public class Oper_Prec { 2 public static void main(String[] args) { 3 int x = 5; 4 int y = 10; 5 int z = 7; 6 int w = 6; 7 int answer; 8 9 System.out.println("x: " + x); 10 System.out.println("y: " + y); 11 System.out.println("z: " + z); 12 13 System.out.println("计算包含相同优先级运算符的表达式"); 14 15 answer = x + y - z; 16 17 System.out.println("x+y-z = " + answer); 18 } 19}
以下是Java运算符的结合性表(从高到低优先级)。
| 运算符 | 描述 | 结合性 |
|---|---|---|
| +, - | 一元正负号 | 从右到左 |
| !, ~ | 逻辑非和按位非 | 从右到左 |
| = | 直接赋值 | 从右到左 |
| +=, -= | 加法赋值和减法赋值 | 从右到左 |
| *=, /=, %= | 乘法赋值、除法赋值、取模赋值 | 从右到左 |
| <<=, >>= | 左移赋值和右移赋值 | 从右到左 |
| &=, ^=, | = | 按位与赋值、异或赋值、或赋值 |
| ++, -- | 后缀/后置自增和自减 | 从右到左 |
| *, /, % | 乘法、除法、取模 | 从左到右 |
| +, - | 加法、减法 | 从左到右 |
| <<, >> | 左移、右移 | 从左到右 |
| <, <= | 关系运算符 | 从左到右 |
| >, >= | 关系运算符 | 从左到右 |
| ==, != | 关系运算符 | 从左到右 |
| & | 按位与 | 从左到右 |
| ^ | 按位异或 | 从左到右 |
| && | 逻辑与 | 从左到右 |
| || | 逻辑或 | 从左到右 |
| | | 按位或 | 从左到右 |