1.逻辑运算符(掌握)
&(与):(见不到了)
false & false = false
true & false = false
true & true = true
false & true = false
&&(双与):
false && false = false
true && false = false
true && true = true
false && true = false
|(或):(见不到了)
false | false = false
false | true = true
true | true = true
true | false = true
||(双或):
false || false = false
false || true = true
true || true = true
true || false = true
^(异或):(见不到了)
true ^ false = true
false ^ false = false
false ^ true = true
true ^ true = false
!(非):
!false = true
!true = false
!!false = false
!!!false = true
!!!!false = false
!!!!!false = true
2.位运算符(了解)
计算机底层对数据进行位运算是用的数据的二进制的补码形式
~(按位取反)与负数的原码变反码的区别:
~是任何位多要取反,包括符号位,0变1,1变0
负数的原码变反码是除去符号位,其他位取反
^(异或): a ^ b ^ b = a
面试题:
实现两个变量值的交换
1.引用第三方变量
int i = 1;
int j = 2;
int temp = i;
i = j;
j = temp;
2.使用位异或(^)
int i = 1;
int j = 2;
i = i ^ j;
j = i ^ j;//i ^ j ^ j = i
i = i ^ j;//i ^ j ^ i ^ j ^ j = j
<<(左移):
公式: A << B = A * (2 ^ B)
例: 3 << 2 = 3 * (2 ^ 2) = 12
>>(右移):
公式: A >> B = A / (2 ^ B)
例: 3 >> 2 = 3 / (2 ^ 2) = 0
>>>(无符号右移):
>>>与>>的区别:
>>:如果是正数就补0,如果是负数就补1
>>>:不管是正数还是负数,都补0
3.三元运算符(三目运算符,条件运算符)(掌握)
格式:条件表达式 ? 表达式1 : 表达式2;
四种情况:
情况一:
3 > 4 ? 3 : 4;//编译报错,因为条件运算符最终会得到一个结果,我们一定要用一个变量来接收
情况二:
int i = 3 > 4 ? 3 : 4;//编译正确
情况三:
3 > 4 ? System.out.println(3) : System.out.println(4);//编译报错
情况四:
??? a = 3 > 4 ? System.out.println(3) : System.out.println(4);//编译报错,因为条件运算符最终一定要得到一个结果,所以表达式1和表达式2里面不可以是输出语句 |
|