运算符一共分为
算术运算符、
赋值运算符、
比较运算符、
逻辑运算符、
位运算符、
三元运算符
算数运算符
加(+)、减(-)、乘(*)、除(/)、
自增(分++在前和++在后)、自减(——和++一样分前后的)、
字符串连接符(+、将字符串相加得到新的字符串)
取模运算符(%)
如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数就另当别论。
当左边的绝对值小于右边: 结果是左边 当左边的绝对值等于右边或者是右边倍数的时候:结果是0
当左边的绝对值大于右边:结果是余数,符号取决与左边的符号
取余的正负号取决于左边
赋值运算符
= 等于用于赋值和初始化变量:int i = 1; a = 2;
+= 加等于:a += b ——>a = a + b;
—= 减等于:a -= b ——>a = a - b;
*= 乘等于:a *= b ——>a = a * b;
/= 出等于;a /= b ——>a = a / b;
%= 模等于:a &= b ——>a = a %b;
比较运算符
< 小于
> 大于
== 相对于
!= 不等于
<= 小于等于
>= 大于等于
比较运算符运行结束之后返回的都是boolean值 返回值要么是true要么为false;
逻辑运算符
& 与(and)
| 或(or)
! 非(not)
^ 异或(xor)
&& 短路与
|| 短路或
逻辑运算符和比较运算符一样返回的值是boolean类型的
& 两边都为true结果才为true,只要有一边是false,结果就是false
第一个条件 第二个条件 结果
true true true
false true false
true false false
false false false
左右两边同时为true,结果为true。
| 两边都为false结果才为false,只要有一边是true,结果就是true
第一个条件 第二个条件 结果
true true true
false true true
true false true
false false false
左右两边只要有一个结果是true,结果为true
^ 判断两边是否不同,不同则为true,相同则为false
第一个条件 第二个条件 结果
true true false
false true true
true false true
false false false
左右两边相同,结果为false。
! 取反,!true结果是false,!fasle结果是true
!true false
!false true
!!true true
&& 和&结果相同,具有短路效果,如果前半是false,表达式结果一定为false,不运行后一半
|| 和||结果相同,具有短路效果,如果前半是true,表达式结果一定为true,不运行后一半
位运算符
任何信息在计算机中都是以二进制的形式保存的,&、|、^除了可以作为逻辑运算符,也可以做为位算符。
它们对两个操作数中的每一个二进制位都进行运算,0当做false,1当做true。
&将两个二进制数每一位进行&运算,两边都为1结果才为1,只要有一边是0,结果就为0
|将两个二进制数每一位进行|运算,两边都为0结果才为0,只要有一边是1,结果就为1。
^将两个二进制数每一位进行^运算,只要两边不同结果就为1,相同则为0。
我们可以对数据按二进制位进行移位操作,java的移位运算符有三种:
<< 左移 将二进制的每一位向左移,低位补0。左移几位就相当于乘以2的几次方。
>> 右移 将二进制的每一位向右移,原来高位是0就补0,原来高位是1就补1。右移几位就相当于除以2的几次方。
>>> 无符号右移 将二进制的每一位向右移,高位补0。正数移动没区别,负数移动后变为正数。
三元运算符
(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
如
int i = 1,j = 2,k
k = i > j ? i : j;
System.out.println(z);
比较i j的大小并输出较大的数
总结:
取模就是对一个数求它的余数 int类型的数默认返回类型为int 小数点后边不管多大都会被舍弃 不会像四舍五入啥的
&&短路与如果第一个条件是false 程序直接结束更好的提高了运算速度
||短路或如果第一个条件是true 程序直接结束
<<一个正整数向左移动几位就乘以2的几次幂
>>一个正整数向右移动几位就除以2的几次幂