# 1.Java中运算符的种类
算术运算符、位运算符、赋值运算符、关系运算符、逻辑运算符、三目运算符、类型相关运算符
# 2.算术运算符
作用:执行基础的四则运算
+ – * / % ++ —
取余运算(模运算):
-
//模运算(取余运算)
-
int
a
=
10
;
-
int
b
=
3
;
-
System
.
out
.
println
(
a
%
b
);
自增运算符:++
作用:操作一个变量(单目运算符),以步长为1,将运算数的值进行自增
i++:先用后加:①将变量中的值取出,进行打印或四则运算(用)②对变量进行步长为1的自增③将自增完毕量重新赋值给变量
++i:先加后用:①
对变量进行步长为1的自增②
将自增完毕量重新赋值给变量③
将变量中的值取出,进行打印或四则运算(用)
对变量进行步长为1的自增②
将自增完毕量重新赋值给变量③
将变量中的值取出,进行打印或四则运算(用)
-
int
i1
=
0
;
-
System
.
out
.
println
(
i1
++);
-
System
.
out
.
println
(
i1
);
-
-
System
.
out
.
println
(
"----------"
);
-
-
int
i2
=
0
;
-
System
.
out
.
println
(++
i2
);
-
System
.
out
.
println
(
i2
);
-
-
System
.
out
.
println
(
"----------"
);
-
-
int
i3
=
0
;
-
int
i4
=
0
;
-
System
.
out
.
println
(
i3
++
+
++
i3
);
//2:0 + 2
-
System
.
out
.
println
(++
i4
+
i4
++);
//2:1 + 1
-
-
System
.
out
.
println
(
"----------"
);
-
-
System
.
out
.
println
(
i3
);
//2
-
System
.
out
.
println
(
i4
);
//2
# 3.位运算符
作用:操作
整数
的2进制位
整数
的2进制位
注意:Java的位运算符不适用于浮点值
(了解:)
二进制位的表示形式:
5:
0
000 0000 0000 0000
0000 0000 0000 0101 –> 1*2^0 + 0*2^1 + 1*2^2 = 1 + 0 + 4 = 5
0
000 0000 0000 0000
0000 0000 0000 0101 –> 1*2^0 + 0*2^1 + 1*2^2 = 1 + 0 + 4 = 5
9:
0
000 0000 0000 0000
0000 0000 0000 1001
0
000 0000 0000 0000
0000 0000 0000 1001
二进制整数的表示码制:
二进制表示整数统一使用
补码
表示:
补码
表示:
正整数:补码 == 源码
负整数:补码:去除正负位,得到绝对值位,将绝对值位:按位取反,末位加1
-5:
0
000 0000 0000 0000
0000 0000 0000 0101
0
000 0000 0000 0000
0000 0000 0000 0101
取绝对值:1
(
000 0000 0000 0000
0000 0000 0000 0101)
(
000 0000 0000 0000
0000 0000 0000 0101)
按位取反:1(111 1111 1111 1111 1111 1111 1111 1010)
末尾加1:1
(111 1111 1111 1111 1111 1111 1111 1011)
(111 1111 1111 1111 1111 1111 1111 1011)
-5:
1
111 1111 1111 1111 1111 1111 1111 1011
1
111 1111 1111 1111 1111 1111 1111 1011
二进制位负数求绝对值:
①忽略符号位
②将绝对值位:末尾减1,再取反
1
(
111 1111 1111 1111 1111 1111 1111 1011)
1
(
111 1111 1111 1111 1111 1111 1111 1010)
1
(000
0000 0000 0000 0000 0000 0000 0101)
&:与运算
作用:全1为1,有0全0
5:0000 0101
9:0000 1001
&:0000 0001 = 1
|:或运算
作用:有1为1,全0为0
5:0000 0101
9:0000 1001
|:0000 1101 = 13
~:取反运算(单目运算符)
作用:01互换
5:0000 0101
~:1111 1010 = -6
^:异或运算
作用:相同为0,不同为1
5:0000 0101
9:0000 1001
^:0000 1100 = 12
>>:右移运算
作用:将2进制位向右进行移动,最右边的2进制位溢出,空位在左侧,用符号位补齐
现象:
正整数
向右位移1位,相当于除以1次2,右移运算不会改变运算数的符号
正整数
向右位移1位,相当于除以1次2,右移运算不会改变运算数的符号
5:0000 0101
>> 2:0000 0001
<<:左移运算
作用:将2进制位向左进行位移,最左边的2进制位溢出,空位在右侧,用0补齐
现象:正整数向左位移1位,相当于乘以1次2,左移运算有可能改变运算数的正负
5:0000 0101
<< 2:0001 0100
>>>:无符号右移运算
作用:
将2进制位向右进行移动,
最右边的2进制位溢出,
空位在左侧,统一使用0补齐
将2进制位向右进行移动,
最右边的2进制位溢出,
空位在左侧,统一使用0补齐
现象:无符号右移得到的结果一定是正数
5:0000 0101
>>> 1:0000 0010
-5:1111 1011
>>> 1:0111 1101
# 4.赋值运算符
传统的赋值运算符只有一个:=
i1 += 5; : 在i1这个变量原值的基础上加上一个5,并将运算结果重新赋值回i1
+=:赋值运算符的扩展
+= -= *= /= %= &= |= ^= >>= <<= >>>=
赋值运算符扩展的规则:
①被扩展的运算符必须是双目运算符
②被扩展的运算符运算结果必须是数字
# 5.关系运算符
作用:用来表示两个数字类型晕算数的大小、等于等关系
< <= == != >= >
# 6.逻辑运算符
&:同真为真,一假全假
|:有真为真,全假为假
!:真假互换
^:相同为假,不同为真
&&:短路与:如果参与与运算的两个条件中,第一个条件就是假的,后序判断条件不执行
||:短路或:如果参与或运算的两个条件中,第一个条件就是真的,后序判断条件不执行
# 7.三目运算符
解释名词:运算符的目数:就是参与当前运算符运算的运算数个数
单目运算符:++ — ~ !
双目运算符:+ – * / % >> << >>> & && | || == != < <= > >=
三目运算符:?:
作用:实现最简单的条件分支:根据一个条件是否达成,判断返回哪个具体的值
使用公式:条件成立吗 ? 成立返回这个 : 不成立返回这个;
注意:三目运算符长得像表达式,但是这个东西本质上还是运算符,只要是运算符就需要一个结果变量接收其运算结果
练习题:
通过三目运算符的嵌套,实现对int型整数a和b的大小关系的判断:
要求:
a > b:返回“大于”字符串
a == b:返回“等于”字符串
a < b:返回“小于”字符串
-
int
a
=
10
;
-
int
b
=
15
;
-
String
resultStr
=
a
>
b
?
"大于"
:
(
a
==
b
?
"等于"
:
"小于"
);
-
System
.
out
.
println
(
resultStr
);
# 8.运算符的结合性
结合性:一个运算符从哪边向哪边进行运算
大部分的运算符都是从左向右进行结合的
Java中从右向左进行结合的运算符:赋值运算符、单目运算符、三目运算符
版权声明:本文为qq_39326137原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。