一、算数运算符:
+、-、*、/、%(双目运算)
%用法——>判断奇偶数
二、赋值运算符:
(左值) = (右值); 复合赋值:num += 1
三、关于运算符:
>、<、>=、<=、==、!=
四、逻辑运算符:
&&、||、!
五、单目运算符:
1、++自增1
num++; <=> num = num+1;
++num; <=> num = num+1;
++和其他运算符结合使用
例如:
int num = 0;
int res = num++;
先取num值,再赋值给res(0),最后再自增1
int num = 0;
int res = ++num;
先去num值,再对num增加1;最后赋值给res(1)
2、-- 自减1
六、位运算:
二进制运算
& 按位与 10 & 3 —> 0000 1010 —>2
0000 0011
二进制,该位有一方是0,结果就是0;双方都是1,结果才是1
| 按位或 10 | 3 —> 11
二进制,该位有一方是1,结果就是1;双方都是0,结果才是0
^ 异或 10 ^ 3 —> 9
二进制,该位上下两位不一样,结果就是1;相同为0
<< 左移 10 << 1 0000 1010——>2^1+2^3——>10
0001 0100——>2^2+2^4——>(2^1+2^3)*2^1=20
将左值num * 2的n次方
>> 右移 10 >>1 0000 1010
0000 0101 10/2^1
这里是补符号位,符号位是几,补几。将左值num/2的2次方
思考:-1>>2
1000 0001原码 ——>1111 1111补码
1111 1111补码——>1000 0001原码——> 结果:-1
正整数:num<<n ,num扩大2的n次方倍;
num>>n ,num缩小2的n次方倍;
负数: 负数转成二进制,二进制位左移、右移,然后二进制结果转为十进制
***面试考点:
1、判断该数num,是基数还是偶数,除取余外,还有没有其他方式? 剑指offer:奇偶问题
方法:
0000 0001 1 0000 0010 2
0000 0011 3 0000 0100 4
0000 0101 5 0000 0110 6
通过位运算——按位与,与1
num & 1 ——>末端结果为1——>奇数
num & 1 ——>末端结果为0——>偶数
2、(num1+num2)/ 2 对其进行优化?——>二分查找
方法:
将(num1+num2)>> 1
( (num2 - num1) >> 1 ) +num1
(left + right) / 2 <= > ((right - left) >> 1) + left
七、类型/类型 ——>结果类型
int / int —>int 10 / 3 —> 3
double / int —>类型提升 double
short / int —>int
加法:1.1+2—> double+int —>double 3.1
八、类型转换
隐士转换
short res = 1; (2字节)
int num = res; (4字节)
可以直接由小变大
显示转换(强转)
int res = 1; (4字节)
short num = (short)res;对数据进行截取。