运算符
算数运算符 :+; -; /; %; ++; --;
* 在一条语句中,应尽量避免对统一变量的多次运算操作。
public class HelloWorld {
public static void main(String[] args) {
int i = 10;
int i1 = 4;
System.out.println(10/3);
System.out.println(10%3);
}
}
赋值运算符: = += -+ *= /= %=
* 几种运算符在进行运算的时候 会进行数据类型的强制转换
逻辑运算符 : & | ! && || ^
逻辑运算(布尔运算):
- 与 &:两个操作数相与,如果都为true,则为true
- 或 |:两个操作数相或,有一个为true,则为true
- 异或 ^:相异为true
- 短路与 &&:从第一个操作数推断结果,只要有一个为false,不再计算第二个操作数
- 短路或 ||:从第一个操作数推断结果,只要为true,不再计算第二个操作数
在关系运算中,第一部分无论是true或false,那么第二部分都会进行运算
位运算
位运算效率最高:位运算是对机器码二进制进行操作
对移位运算符右侧的参数需要进行模32的运算(除非左边是long类型,在这种情况下需对右侧操作数模64)。例如:1 << 35与1 << 3 或8是相同的
三元运算符:关系运算?结果1 : 结果2;
int a = 4;
int b = 8;
int c = a > b ? a : b;
System.out.println(c);
String s = a > b ? "大于" : "小于";
System.out.println(s);
运算符的优先顺序
- 只有单目运算符、三元运算符、 赋值运算符是从右向左运算的。
括号与运算符级别
- 如果不使用圆括号,就按照给出的运算符优先级次序进行计算。同一个级别的运算符按照从左到右的次序进行计算(除了表中给出的右结合运算符外。)
- 例如,由于 && 的优先级比 || 的优先级高,所以表达式
a && b || c 等价于 (a && b)|| c
又由于 += 是右结合运算符,所以表达式 a += b += c等价于 a += (b += c),也就是将b += c 的结果(加上c之后的b)加到a 上。