一、什么是运算符
计算机的最基本的用途之一就是执行数学运算,比如:
int a = 10;
int b = 20;
a + b;
a < b;
上述 + 和 < 等就是运算符,即:对操作数进行操作时的符号,不同运算符操作的含义不同。
二、算数运算符
1.基本四则运算符:加减乘除模(+ - /)
int a = 20;
int b = 10;
System.out.println(a + b); // 30
System.out.println(a - b); // 10
System.out.println(a * b); // 200
System.out.println(a / b); // 2
System.out.println(a % b); // 0 --->模运算相当于数学中除法的余数
注意:
都是二元运算符,使用时必须要有左右两个操作数
int / int 结果还是
int
类型,而且会向下取整
int a = 3;
int b = 2;
// 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整,即小数点之后全部舍弃掉了
System.out.println(a / b);
// 如果要得到数学中的结果,可以使用如下方式
double d = a*1.0 / b;
System.out.println(d);
做除法和取模时,右操作数不能为0
int a = 1;
int b = 0;
System.out.println(a / b)
// 运行结果
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Test.main(Test.java:5)
两侧操作数类型不一致时,向类型大的提升
System.out.println(1+0.2); // +的左侧是int,右侧是double,在加之前int被提升为double
// 故:输出1.2
2.
增量运算符
该种类型运算符操作完成后,会将操纵的结果赋值给左操作数。
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出3
a -= 1; // 相当于 a = a - 1
System.out.println(a); // 输出2
a *= 3; // 相当于 a = a * 3
System.out.println(a); // 输出6
a /= 3; // 相当于 a = a / 3
注意:只有变量才能使用该运算符,常量不能使用。
3.
自增
/
自减运算符
++ --
++是给变量的值
+1
,
--
是给变量的值
-1
。
int a = 1;
a++; // 后置++ 表示给a的值加1,此时a的值为2
System.out.println(a++); // 注意:后置++是先使用变量原来值,表示式结束时给变量+1,因此输出2
System.out.println(a); // 输出3
++a; // 前置++ 表示给a的值加1
System.out.println(++a); // 注意:前置++是先给变量+1,然后使用变量中的值,因此输出5
System.out.println(a); // 输出5
// --操作符给操作-1,与++含义类似
注意:
如果单独使用,【前置++
】和【后置
++
】没有任何区别
如果混合使用,【前置++
】先
+1
,然后使用变量
+1
之后的值,【后置
++】先使用变量原来的值,表达式 结束时给变量+1
只有变量才能使用自增/
自减运算符,常量不能使用,因为常量不允许被修改
三、关系运算符
关系运算符主要有六个:
== != < > <= >=
,其计算结果是
true
或者
false
。
int a = 10;
int b = 20;
// 注意:在Java中 = 表示赋值,要与数学中的含义区分
// 在Java中 == 表示相等
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false
四、逻辑运算符
1.
逻辑与
&&
语法规则:表达式
1 &&
表达式
2
,左右表达式必须是
boolean
类型的结果。
相当于现实生活中的且,比如:如果是学生,并且 带有学生证 才可以享受半票。
两个表达式都为真,结果才是真,只要有一个是假,结果就是假。
![](https://i-blog.csdnimg.cn/blog_migrate/eee798a2126be726659e675b3262aa32.png)
2. 逻辑 ||
语法规则:表达式
1 ||
表达式
2
,左右表达式必须是
boolean
类型的结果。
相当于现实生活中的或,比如:买房子交钱时,全款 或者 按揭都可以,如果全款或者按揭,房子都是你的, 否则站一边去。
3.
逻辑非
!
语法规则:
!
表达式
真变假,假变真。
4.
短路求值
&&
和
||
遵守短路求值的规则
.
对于
&& ,
如果
左侧表达式值为
false,
则表达式结果一定是
false,
无需计算右侧表达式
.
对于
||,
如果
左侧表达式值为
true,
则表达式结果一定是
true,
无需计算右侧表达式
.
五、位运算符
Java
中数据存储的最小单位是字节,而数据操作的最小单位是比特位
.
字节是最小的存储单位,每个字节是由
8
个二 进制比特位组成的,多个字节组合在一起可以表示各种不同的数据。
位运算符主要有四个
:
& | ~ ^ ,除
~
是一元运算符外,其余都是二元运算符。
位操作表示
按二进制位运算
.
计算机中都是使用二进制来表示数据的
(01
构成的序列
),
按位运算就是在按照二进制位 的每一位依次进行计算.
1.
按位与
&
:
如果两个二进制位都是
1,
则结果为
1,
否则结果为
0
2.
按位或
|:
如果两个二进制位都是
0,
则结果为
0,
否则结果为
1
3.
按位取反
~:
如果该位为
0
则转为
1,
如果该位为
1
则转为
0
4.
按位异或
^:
如果两个数字的二进制位相同
,
则结果为
0,
相异则结果为
1
六、移位运算符
1.
左移
<<
:
最左侧位不要了
,
最右侧补
0.
2.
右移
>>
:
最右侧位不要了
,
最左侧补符号位
(
正数补
0,
负数补1)
3.
无符号右移
>>>:
最右侧位不要了
,
最左侧补
0.
注意
:
1.
左移
1
位
,
相当于原数字
* 2.
左移
N
位
,
相当于原数字
* 2
的
N
次方
.
2.
右移
1
位
,
相当于原数字
/ 2.
右移
N
位
,
相当于原数字
/ 2
的
N
次方
.
3.
由于计算机计算移位效率高于计算乘除
,
当某个代码正好乘除
2
的
N
次方的时候可以用移位运算代替
.
4.
移动负数位或者移位位数过大都没有意义
.
七、条件运算符
条件运算符只有一个
:
表达式
1 ?
表达式
2 :
表达式
3
当
表达式
1
的值为
true
时
,
整个表达式的值为
表达式
2
的值
;
当
表达式
1
的值为
false
时
,
整个表达式的值为
表达式
3
的值
.
也是
Java
中唯一的一个
三目运算符
,
是条件判断语句的简化写法
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;