一、运算符
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,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)
九、运算符的优先级
类别 | 操作符 | 关联性 |
后缀 | () [] . (点操作符) | 左到右 |
一元 | + + - !〜 | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | >> = << = | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |