1. 算数运算符:+、-、*、/、%、++、--
扩展:
经典面试题一:输出结果为?
int a = 8;
int b = (a++)+(++a)+(a*10);
System.out.println(b);
经典面试题二:输出结果为?
int i = 0 ;
i = ++i;
System.out.println(i);
底层实现:i = (int)(i+1); i=i;
int i = 0;
i = i++;
System.out.println(i);
底层实现:int temp = i; i = (int)(i+1); i = temp;
2. 赋值运算符:**=、+=、-=、 *=、/= 、 %=**
扩展:
经典面试题一:输出结果为?
int a,b;
a = b = 100;
System.out.println(a);
System.out.println(b);
经典面试题二:下面的两种写法结果分别是?
short s=1;
s = s+1;
short s=1;
s += 1;
赋值规则:
复合赋值 E1 op= E2等价于简单赋值 E1 = (T)((E1) op (E2)),其中T是E1的类型。
3. 关系运算符:**==、!=、>、 <、 >=、 <=**
注意:
\1. 关系运算符的结果都是boolean类型,true或者 false
\2. 不要将==用成=
扩展:
经典面试题一:输出结果为?
int x = 10;
int y = 10;
boolean flag = (x == y);
System.out.println(flag);
flag = (x = y);
System.out.println(flag);
经典面试题二:输出结果为?
boolean b1 = true;
boolean b2 = false;
boolean b3 = (b1 == b2);
System.out.println(b3);
boolean b4 = (b1 = b2);
System.out.println(b4);
4. 逻辑运算符:
&(与)、&&(短路与)、|(或) 、||(短路或)、!(非)、^(异或)
规则:
& 和 && 规则:两个有一侧为false,结果为false
| 和 || 规则 :两侧有一侧为true,结果为true
^ 规则:两侧相同为false,不同为true
!规则:置反,false变成true , true变成false
比较:做实验证明谁的效率高
& vs && 和 | vs ||
注意:
\1. 逻辑运算符运行结果都是boolean类型
\2. &、&&、|、||、^ 两侧都是boolean类型数据
练习题:在dos窗口输入一个数字,判断是否在50~100的区间内:
5. 三目运算符/三元运算符
语法:
理解:
案例:在控制台输入两个int类型的数字,输出最大值
扩展面试题1:
int a=5;
System.out.println("a="+((a<5)?10.9:9));
A. 编译错误
B. 10.9
C. 9
D. 以上答案都不对
扩展面试题2:
char x='x';
int i=10;
System.out.println(false?i:x);
System.out.println(false?100:x);
A. 120 x
B. 120 120
C. x 120
D. 以上答案都不对
返回值的规则:
6. 字符串拼接符
int a=10; int b=20; System.out.println("a="+a+"b="+b);
输出结果:a=10 b=20
7. 位运算符: & 、 |、 ^ 、 <<、 >>、 >>>
&:与运算符(有一个假输出为假,公式两边都判断后才输出)
&&:短路与(有一个假输出为假,公式只要判断一个为false就直接输出)
|:或运算符(有一个真输出为真,公式两边都判断后才输出)
||:短路或(有一个真输出为真,公式只要判断一个为true就直接输出)
^:异或(相同为假,不同为真)
!:取反
8. 表达式
5+6:算数表达式
5>6:关系表达式
5|6:位运算表达式
9. 运算符的优先级别
经验:不用记,灵活运用小括号