Java 中的算术运算符
原文: https://javabeginnerstutorial.com/core-java-tutorial/java-arithmetic-operator/
在本节中,我们将学习算术,运算符,优先级和运算符关联。
运算符优先级
优先级决定在同一计算中存在多个运算符的情况下,首先求值哪个运算符。
运算符优先级表
| 运算符 | 优先级(从高到低) |
|---|---|
| 后缀 | expr++ expr— |
| 一元 | ++expr —expr +expr –expr ~ ! |
| 乘法 | / % |
| 加法 | + – |
| 移位 | << >> >>> |
| 关系 | < > <= >= instanceof |
| 相等 | == != |
| 按位与 | & |
| 按位异或 | ^ |
| 按位或 | | |
| 逻辑与 | && |
| 逻辑或 | || |
| 三元 | ?: |
| 赋值 | = += -= = /= %= &= ^= |= <<= >>= >>>= |
优先级示例
/** Here we will see the effect of precedence in operators life*/class OperatorPrecedenceExample {public static void main(String args[]) {int i = 40;int j = 80;int k = 40;int l = i + j / k;/** In above calculation we are not using any bracket. So which operator* will be evaluated first is decided by Precedence. As precedence of* divison(/) is higher then plus(+) as per above table so divison will* be evaluated first and then plus.** So the output will be 42.*/System.out.println("value of L :" + l);int m = (i + j) / k;/** In above calculation brackets are used so precedence will not come in* picture and plus(+) will be evaluated first and then divison()/. So* output will be 3*/System.out.println("Value of M:" + m);}}
运算符关联性
如果两个运算符在计算中具有相同的优先级,则将使用运算符的关联性来决定首先执行哪个运算符。
关联性示例
package jbt.bean;/** Here we will see the effect of precedence in operators life*/public class OperatorAssociativityExample {public static void main(String args[]) {int i = 40;int j = 80;int k = 40;int l = i / k * 2 + j;/** In above calculation we are not using any bracket. And there are two* operator of same precedence(divion and multiplication) so which* operator(/ or *) will be evaluated first is decided by association.* Associativity of * & / is left to right. So divison will be evaluated* first then multiplication.** So the output will be 82.*/System.out.println("value of L :" + l);int m = i / (k * 2) + j;/** In above calculation brackets are used so associativity will not come* in picture and multiply(*) will be evaluated first and then* divison()/. So output will be 80*/System.out.println("Value of M:" + m);}}
Java 中的运算符
让我们分别讨论每个运算符。
赋值(=)和算术运算符(+, -, *, /)的工作方式与其他编程语言相同,因此在此不再赘述。 /和*运算符的优先级高于加法(+)或减法(-)或取模(%)
