一、算数运算符
操作符 | 描述 | 例子:int a=10;int b=3; | 结果 |
+ | 加 | a+b | 13 |
- | 减 | a-b | 7 |
* | 乘 | a*b | 30 |
/ | 除 | a/b | 3 |
% | 余 | a%b | 1 |
++ | 自增 | a++;++a(注) | 11;11 |
-- | 自减 | a--;--a(注) | 9;9 |
注:前缀自增、自减法(++a、--a):先自增、自减,在进行表达式运算;
后缀自增、自减法(a++、a--):先进行表达式运算,在自增、自减。
public class selfAdd{ public static void main(String[] args){ int a=10;//定义变量 int b=20;//定义变量 int c=++a;//先自增在赋值 int d=b++;//先赋值在自增 System.out.println(a); System.out.println(b); System.out.println(c); System.out.println(d); } }
运行结果
11 21 11 20
二、关系运算符
运算符 | 描述 | 例子:int a=10,b=20; | 结果 |
== | 等于 | a==b | false |
!= | 不等于 | a!=b | true |
> | 大于 | a>b | false |
< | 小于 | a<b | true |
>= | 大于等于 | a>=b | false |
<= | 小于等于 | a<=b | true |
三、位运算符
应用于int、long、short、char、byte
操作符 | 描述 |
例子:int a=60;//60=0011 1100 int b=13;//13=0000 1101 |
结果 |
& | 对应位置是1为1,否则为0 | (a&b) | 12;//0000 1100 |
| | 对应位置是0为0,否则为1 | (a|b) | 61;//0011 1101 |
^ | 对应位置相同为0,否则为1 | (a^b) | 49;//0011 0001 |
~ | 取反操作,1变为0,0变为1 | (~a) | -61;//1100 0011 |
<< | 左移 | a<<2 | 240;//1111 0000 |
>> | 右移 | a>>2 | 15;//1111 |
>>> | 补零 | a>>>2 | 15;//0000 1111 |
四、逻辑运算符
操作符 | 描述 | 例子:boolean a=true,b=false; | 结果 |
&& | 逻辑与 | (a&&b) | false |
|| | 逻辑或 | (a||b) | true |
! | 逻辑非 | !(a&&b) | true |
短路:
public class DuanLu{ public static void main(String[] args){ int a=5; boolean b=(a<3)&&(a++<10);/*先判断a<3为false,则b的结果必定为false,故不再执行短路逻辑运算符后面的操作(a++<10)*/ System.out.println("b="+b); System.out.println("a="+a); } }
运行结果
b=false a=5
五、赋值运算符
操作符 | 描述 | 例子:int a=1;int b=2;int c=10; | 结果 |
= | 赋值 | c=a+b; | 3 |
+= | 加和赋值 | c+=a;//c=c+a | 11 |
-= | 减和赋值 | c-=a;//c=c-a | 9 |
*= | 乘和赋值 | c*=b;//c=c*b | 20 |
/= | 除和赋值 | c/=b;//c=c/b | 5 |
%= | 取模和赋值 | c%=b;//c=%b | 0 |
<<= | 左移位赋值 | c<<=2;//c=c<<2 | |
>>= | 右移位赋值 | c>>=2;//c=c>>2 | |
&= | 按位与赋值 | c&=2;//c=c&2 | |
|= | 按位或赋值 | c|=2;//c=c|2 | |
^= | 按位异或赋值 | c^=2;//c=^2 |
六、其他运算符
①条件运算符(三元运算符)
主要决定哪个值赋给变量
variable x = (expression)? value if true :value if false
public class Test{ public static void main(String[] args){ int a,b; a=10; //如果a等于1成立,则设置b为20,否则为30 b=(a==1)? 20:30; System.out.println("b的值为:"+b); //如果a等于10成立,则设置b为20,否则为30 b=(a==10)? 20:30; System.out.println("b的值为:"+b); } }
运行结果
b的值为:30
b的值为:20
②instanceof运算符
用于操作对象实例,检查该对象是否是一个特定类型(类类型或者接口类型)
(Object reference variable) instanceof (class/interface type)
若左侧所指的对象为右侧类/接口的一个对象,则结果为真
class Vehicle{} public class Car extends Vehicle{ public static void main(String[] args){ Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println(result); } }
运行结果
true
————————————————————————————————————————
Java运算符优先级:以下最高优先级的在表的最上方,最低优先级的在表中的最下方
类别 | 操作符 | 关联性 |
后缀 | ()小括号 []中括号 .点操作符 | → |
一元 | +取正 -取负 !逻辑非 ~取反 | ← |
乘除余 | *乘法 /除法 %取余 | → |
加减 | +加法 -减法 | → |
移位 | >>右移 >>>补零 <<左移 | → |
关系 | >大于 >=大于等于 <小于 <=小于等于 | → |
相等 | ==等于 !=不等于 | → |
按位与 | & | → |
按位异或 | ^ | → |
按位或 | | | → |
逻辑与 | && | → |
逻辑或 | || | → |
条件 | ?:三木运算符 | ← |
赋值 | =赋值 +=加和赋值 -=减和赋值 *=乘和赋值 /=除和赋值 %=取模和赋值 >>=右移位赋值 <<=左移位赋值 &=按位与赋值 ^=按位异或赋值 |=按位或赋值 | ← |
逗号 | , | → |