基本运算符
int a=3, b = 2;
加(+)//a + b = 5;
减(-)//a - b = 1;
乘(*)//a * b = 6;
除(/)//a / b= 1;除时需要注意
(1)0不能做除数
(2)a / b =1;若 a =3.0(即为double类型时)
a / b = 1.5;
取余(%)//a % b = 1;
取余也可以叫做求模运算
%取余运算不仅可以对int求模,也可以对double 进行求模
例如:11.5 % 2.0 = 1.5;
加等(+=)//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;
自增(++) 分为前置自增(++a)和后置自增(a++)
int a = 6;
b = ++ a//的值7,a的值为7;先给a 加1后赋值给b
b = a++//b的值6,a的值为7;先将a赋值给b 然后a在加1
++a 和a++ 后a的值都为7;
自减(--) 分为前置自减(--a)和后置自减(a--)
int a = 6;
b = --a//的值5,a的值为5;先给a 减1后赋值给b
b = a--//b的值6,a的值为5;先将a赋值给b 然后a在减1
--a 和a--后a的值都为5;
总结:
1. 如果不取自增(自减)运算的表达式的返回值, 则前置自增(自减)和后置自增(自减)没有区别.
2. 如果取表达式的返回值, 则前置自增(自减)的返回值是自增(自减)之后的值, 后置自增(自减)的返回值是自增自减之前的值。
等于(==)
不等于(!=)
大于(>)
小于(<)
大于等于(>=)
小于等于(<=)
关系运算符比较简单,需要注意的是,关系运算符的
表达式返回的值都是boolean类型
逻辑与 &&(短路与)
规则: 两个操作数都为 true, 结果为 true, 否则结果为 false
表达式1 && 表达式2
若表达式1为假,则结果必定为假,所以表达式2
就不在计算了
逻辑或 ||(短路或)
规则: 两个操作数都为 false, 结果为 false, 否则结果为true
表达式1 &||表达式2
若表达式1为真,则结果必定为真,所以表达式2
就不在计算了
逻辑非 !
规则: 操作数为 true, 结果为false;操作数为false, 结果为ftrue;
!后面为一个布尔表达式或布尔值
Java 中对数据的操作的最小单位不是字节, 而是二进制位.
位运算符主要有四个:
按位与(&)
如果两个二进制位都为1, 则结果为 1 否则为 0
按位或(|)
如果两个二进制位都为0, 则结果为 0,否则为 ,1
注意: 当 & 和 | 的操作数为整数(int, short, long, byte) 的时候,
表示按位运算, 当操作数为 boolean 的时候, 表示逻辑运算.
按位非取反(~)
如果该位为 0 则转为 1, 如果该位为 1 则转为 0
1.0x 前缀的数字为 十六进制 数字. 十六进制可以看成是二进制的简化表示方式. 一个十六进制数字对应 4 个二进制位.
2. 0xf 表示 10 进制的 15, 也就是二进制的 1111
按位异或(^)
如果两个数字的二进制位相同, 则结果为0,否则为1;
左移 <<: 最左侧不要了,最右侧补0
右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
无符号右移 >>>: 最右侧位不要了, 最左侧补 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 的值.
类似于if语句
if(表达式1){表达式2}
else (表达式3)
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b ;