一、运算符
算术运算符:
示例1:
int a = 1;
int b = 2;
a=b++(先赋值后自增) a=2
a=++b(先自增后赋值) a=3
示例2:
int x = 1;
int y = 2;
y = x + y - (++y)
y = 0;
把中括号中的式子当成一个整体,但是不需要优先算,继续按照由左向右算。
赋值运算符:
作用是将一个值赋给一个变量,运算顺序由左向右.
注:a+=3 是 a = a+3 的缩写,吧 a+3 值赋值给a,所以a = 4
关系运算符:
作用比较两边的操作类,结果(返回值)总是boolean类型的
逻辑运算符:
对于boolean型的结果的表达式进行运算,运算结果总是boolean型
注:在计算机中,非0即真,0为假
逻辑或,或1则1
逻辑与,全1才1
示例: boolean a = true
boolean b = false
Systram.out.println(a&b)
输出结果为 false
注:与(&)运算,分别计算表达式两边的结果再作&运算,只有两个都为true,结果才为true,否则为false。
Systram.out.println(a|b)
输出结果为true
注:或(|)运算,分别计算表达式两边的结果再作|运算,只有两个都为false,结果才为false,否则为true。
Systram.out.println(a^b)
输出结果为true
注:异(^)运算,分别计算表达式两边的结果再作 ^ 运算,两边结果相同,结果为false,否则为true。
&和&&的区别:
&:在逻辑运算时,分别计算飙到是两边的结果,再作&运算,再作位算时&表示按位与。
&&:短路与运算,先计算左边的表达式,如果结果是false,那么不用计算右边的表达式,直接返回false;如果左边的表达式结果是true,再计算右边的表达式,如果有变的表达式为true,否则为false。
|和||原理同上(相反)
所以短路与(&&)和短路或(||)的计算效率更高,建议使用。
位运算:
对两个操作数中的每一个二进制都进行运算。
重点题:以最快的速度计算84的结果
分析:8的二进制 0000 1000
32的二进制 0010 0000
Systram.out.println(8<<2) 这是对计算机来说运算最快的速度。
左移算法:位数作为2的次幂与操作数相乘 a << b = c a2^b=c
右移算法:操作数除以位数的2次幂 a >> = c a/2^b = c