算数运算符:+,-,,/,%,++,–
赋值运算符:=
扩展赋值运算符:+=,-=,=,/=
关系运算符:>,<,>=,<=,==,!=
逻辑运算符:&&,||,!
位运算符:&,|,^,~,>>,<<,>>>
条件运算符:?,:
注意事项:
(1)a++与++a的区别:
int a = 1;
system.out.println(a++); //1
system.out.println(++a); //3
a++与++a其实都是自增1,两个的区别就是:上面代码中,第一个输出为什么不是“2”,这个关系到优先级的概念,它会先输出后再自增,以至于第二个运算输出时,a已经是为“2”,然后再自增输出,所以输出为“3”。
因此,a++是先参与运算,然后自增,而++a则相反
int a = 1;
a= a++ //system.out.println(a); 输出为1
找资料找到一道题目:设x=1,y=2,z=3,则表达式y+=z- -/++x的值是( );
答案为:3;
为什么上面说a++先参与运算,在这到题目便可以体现,++x先自增,即为2,然后z- -,先参与运算,则3/2==2,然后–,则为1,接着便是y=y+1,结果等于3;
(2)扩展赋值运算符
byte num = 1;
//num += 1;
//num = num + 1; //报错,num+1时为int类型,需强制转换
(3)
&&(短路与): 一个为false,结果为false,其他不参与运算
||(短路或) : 一个为true,结果为true,其他不参与运算
&(与) 、|(或):无论结果,都参与运算
(4)
位运算符:只能操作数值,操作时会转换成二进制进行运算
system.out.println(4 & 5); //100或101,相同位数,有一个为0,则为0
system.out.println(4 | 5); //100或101,相同位数,有一个为1,则为1
system.out.println(4 ^ 5); //相异为1,相同为0
(5)<< 左移表示乘以2,右移除以2(也可以转换为2进制后移位)
(6)
system.out.println(5>3?5:3);
//表达式为true,则返回?后结果,为false则返回:后结果
system.out.println(false?true:false?ture:false);
//false?...... 为false,返回?后边结果true,后边不必理会