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 中的运算符
让我们分别讨论每个运算符。
赋值(=
)和算术运算符(+, -, *, /
)的工作方式与其他编程语言相同,因此在此不再赘述。 /
和*
运算符的优先级高于加法(+
)或减法(-
)或取模(%
)