一、算术运算符
运算符 | 运算 | 范例 | 结果 |
+ | 正号 | +3 | 3 |
- | 负号 | b=4;-b | -4 |
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取模(取余) | 7%5 | 2 |
++ | 自增(前):先运算后取值 | a=2;b=++a; | a=3;b=3 |
++ | 自增(后):先取值后运算 | a=2;b=a++; | a=3;b=2 |
-- | 自减(前):先运算后取值 | a=2;b=--a; | a=1;b=1 |
-- | 自减(后):先取值后运算 | a=2;b=a--; | a=1;b=2 |
+ | 字符串连接 | “He” + “llo” | “Hello” |
前++:先自增1,然后在运算
后++:先运算,后自增1
自增不会改变本身变量的数据类型
前--:先自减1,然后在运算
后--:先运算,后自减1
连接符:+,只能使用在String与其他数据类型变量之间使用。
二、赋值运算符
特别说明:
①运算的结果不会改变本身的数据类型
②开发中,如果希望变量实现+2的操作,有几种方法?(前提:int num=10;)
//方式一: num = num + 2;
//方式二: num += 2;(推荐)
//开发中,如果希望变量实现+1的操作,有几种方法?(前提:int num = 10;)
//方式一:num = num + 1;
//方式二:num += 1;
//方式三:num++;(推荐)
三、逻辑运算符
逻辑运算符,都是Boolean类型的变量
a | b | a&b | a&&b | a|b | a||b | !a | a^b |
True | True | True | True | True | True | False | False |
True | False | False | False | True | True | False | True |
False | True | False | False | True | True | True | True |
False | False | False | False | False | False | True | false |
区分:&与&&
相同的1:& 与 &&的运算结果相同
相同点2:当符合左边是true时,二者都会执行符合右边的运算
不同点:当符号左边是false时,&继续执行符号右边的运算,&&不再执行符号右边的运算。
推荐使用&&
区分:| 与 ||
相同点1:| 与 ||的运算结相同
相同的2:当符号左边是false时,二者都会执行符号右边的运算
不同点3:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
推荐使用||
特别说明:
①逻辑运算符操作都是Boolean类型的变量,而且结果也是Boolean类型
四、比较运算符
运算符 | 运算 | 范例 | 结果 |
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | true |
Instanceof | 检查是否是类的对象 | “Hello” instanceof String | true |
比较运算符的结果都是Boolean型,也就是要么是true,要么是false
比较运算符 "=="不能误写成”=“
代码:
class CompareTest{
public static void main(String[] args){
int i = 10;
int j = 20;
System.out.println(i == j); // false
System.out.println(i = j);//20
boolean b1 = true;
boolean b2 = false;
System.out.println(b2 == b1);//false
System.out.println(b2 = b1);//true
}
}
特别说明:
①比较运算符的结果是Boolean类型
②> < >= <= :只能使用在数值类型的数据之间
③ == :不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间。
五、位运算符
位运算符 | ||
运算符 | 运算 | 范例 |
<< | 左移 | 3<<2=12 ---> 3*2*2=12 |
>> | 右移 | 3>> 1=1 ---> 3/2=1 |
>>> | 无符号右移 | 3>>>1=1 ----> 3/2=1 |
& | 与运算 | 6 & 3 = 2 |
| | 或运算 | 6 | 3 =7 |
^ | 异或运算 | 6 ^ 3 = 5 |
~ | 取反运算 | ~6 = -7 |
- 位运算是直接对整数的二进制进行的运算
1.位运算符操作的都是整型的数据
2.<<:再一定范围内,每向左移1位,相当于*2
>>:再一定范围内,每向右移1位,相当于/2
class BitTest{
public static void main(String[] args){
int i = 21;
i = -21;
System.out.println("i << 2 :" + (i << 2));
System.out.println("i << 3 :" + (i << 3);
System.out.println("i << 27 :" + (i << 27);
int m = 12;
int n = 5;
System.out.println("m & n :" + (m & n));
System.out.println("m | n :" + (m | n));
System.out.println("m ^ n :" + (m ^ n));
}
}
特别说明:位运算符操作的都是整型的数据
六、三元运算符或三目运算符
1.结构:(条件表示式)?表达式1:表达式2
2.说明:
①条件表达式的结果为Boolean类型
②根据条件表达式真或假,决定执行表达式1,还是表达式2
如果表达式为true,则执行表达式1.
如果表达式为false,则执行表达式2.
③表达式1和表达式2要求是一致的
④三元运算符可以嵌套使用
3.凡是可以使用三元运算符的地方,都可以改写为if-else
反之,不成立。
4.如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简介、执行效率高。
int n1=12;
int n2=30;
int n3=-43;
int max1=(n1 > n2) ? n1 : n2;
int max2=(max1 > n3) ? max1 : n3;
System.out.println("三个数中的最大值为:"+max2);
//改写成if-else:
if(m > n){
System.out.println(m);}
else{
System.out.println(n);}
代码:获取两个整数的较大值
获取三个数的最大值