一、运算符
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java提供了一套丰富的运算符来操纵常量和变量。可以分为以下几大类:
1.算数运算符
2.关系运算符(比较运算符)
3.位运算符
4.逻辑运算符
5.赋值运算符
6.条件运算符(三元运算符)
7.instanceof运算符
二、算数运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。
加(+)、减(-)、乘(*)、除(/)、取余(%)、自增(++)、自减(--)
注意:
前缀自增自减法:先进行自增或者自减运算,再进行表达式运算。
后缀自增自减法:先进行表达式运算,再进行自增或者自减运算 实
例:
//算数运算符
@Test
public void test_01(){
//加
int a = 10 + 20;
System.out.println(a);
//减
int b = 20 - 10;
System.out.println(b);
//乘
int c = 20 * 10;
System.out.println(c);
//除
int d = 20 / 10;
System.out.println(d);
//取余
int e = 20 % 10;
System.out.println(e);
//自增
int f = a++;
int g = ++a;
System.out.println(f+","+g);
//自减
int h = b--;
int i = --b;
System.out.println(h+","+i);
}
三、关系运算符(比较运算符)
运算符 |
描述 |
== |
检查如果两个操作数的值是否相等,如果相等则条件为真。 |
!= |
检查如果两个操作数的值是否相等,如果值不相等则条件为真。 |
> |
检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 |
< |
检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 |
>= |
检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 |
<= |
检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 |
比较运算返回布尔值,true或false。
例:
//关系运算符
@Test
public void test_02(){
int a = 5;
int b = 10;
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a >= b);
System.out.println(a <= b);
}
四、位运算符
进行位运算时,要先把参与运算的操作数换算成二进制的表现形式。
操作符 |
描述 |
& |
如果相对应位都是1,则结果为1,否则为0 |
| |
如果相对应位都是0,则结果为0,否则为1 |
^ |
如果相对应位值相同,则结果为0,否则为1 |
〜 |
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 |
<< |
按位左移运算符。左操作数按位左移右操作数指定的位数。 |
>> |
按位右移运算符。左操作数按位右移右操作数指定的位数。 |
>>> |
按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
例:
//位运算符
@Test
public void test_03(){
int a = 10; //二进制:0000 1010
int b = 5; //二进制:0000 0101
//按位与,二进制结果:0000 0000
System.out.println(a & b);
//按位或,二进制结果:0000 1111
System.out.println(a | b);
//按位异或,二进制结果:0000 1111
System.out.println(a ^ b);
//按位取反,二进制结果:1111 0101
System.out.println(~a);
//按位左移,向左移动2位,二进制结果:0010 1000
System.out.println(a << 2);
//按位右移,向右移动2位,二进制结果:0010
System.out.println(a >> 2);
//按位右移补零,向右移动2位并补零,二进制结果:0000 0010
System.out.println(a >>> 2);
}
五、逻辑运算符
运用在布尔值的计算中,结果返回布尔值。
操作符 |
描述 |
&& |
称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 |
|| |
称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 |
! |
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 |
例:
//逻辑运算符
@Test
public void test_04(){
int a = 5;
int b = 9;
//逻辑与
System.out.println(a > b && a < b);
//逻辑或
System.out.println(a > b || a < b);
//逻辑非
System.out.println(!(a > b && a < b));
}
六、赋值运算符
= |
简单的赋值运算符,将右操作数的值赋给左侧操作数 |
+= |
加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 |
-= |
减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 |
*= |
乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 |
/= |
除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 |
(%)= |
取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
<<= |
左移位赋值运算符 |
>>= |
右移位赋值运算符 |
&= |
按位与赋值运算符 |
^= |
按位异或赋值操作符 |
|= |
按位或赋值操作符 |
七、条件运算符(三元运算符)
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
语法:布尔表达式 ? 结果1 : 结果2;
如果布尔表达式的结果为true,那么返回结果1,否则返回结果2。
例:
//三元运算符
@Test
public void test_05(){
int a = 0;
int b =(a > 0) ? 20 : 30;
System.out.println(b);
}
八、instanceof运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
用法:(Object reference variable) instanceof (class/interface type)
九、运算符的优先级
类别 |
操作符 |
关联性 |
后缀 |
() [] . (点操作符) |
左到右 |
一元 |
+ + - !〜 |
从右到左 |
乘性 |
* /% |
左到右 |
加性 |
+ - |
左到右 |
移位 |
>> >>> << |
左到右 |
关系 |
>> = << = |
左到右 |
相等 |
== != |
左到右 |
按位与 |
& |
左到右 |
按位异或 |
^ |
左到右 |
按位或 |
| |
左到右 |
逻辑与 |
&& |
左到右 |
逻辑或 |
| | |
左到右 |
条件 |
?: |
从右到左 |
赋值 |
= + = - = * = / =%= >> = << =&= ^ = | = |
从右到左 |
逗号 |
, |
左到右 |