面试题 &&:和&运算的结果是一样的,运算过程中有点儿区别,
&无论左边的运算结果是什么右边都参与运算
&&当左边为false的时候,右边不参加运算
||:和| 运算的结果是一样的,运算过程中有点儿区别,
| 无论左边的运算结果是什么右边都参与运算
|| 当左边为true的时候,右边不参加运算
位运算符 用于二进制位运算的符号
二进制位 0为false 1为true & | 运算都是运算二进制 &用来取某个二进制中的某一段 1&0 = 0 ; 1&1 = 1 0^0=0 1^1=0 1^0=1
|运算是保留二进制中的有效位 1为有效位
一个数异或一个数两次,结果还是这个数。 可用于加密 加密是异或一次 解密时再异或一次
位移运算符 { 3<<2 -- 3*2(2)=12 }<<:左移几位其实就是该数乘以2的几次方 <<:可以完 成2的次幂运算
>>:右移几位就是该数据在除以2的几次幂 java的运算自动取整 舍弃小数位及6/4=1
在右移的时候对于高位出现的空位,原来最高位是什么就用什么(0或者1)补位
>>>:无符号右移:与右移的运算方式相同,只是数据在进行右移的时候,高位出现的空位,无论高位是什么,空位都用0补充。
位移运算符都是基于2的倍数的预算
对两个整数的变量进行互换
1.使用第三方变量 (开发时用的方式)
int a = 3; int b = 5; int c ; c = a; a = b; b = c;
2.不使用第三方变量 (不建议使用的方式,如果两个数的数值过大,会超出int范围,会出现强制转换,数据就会发生变化)
a = a + b; // a = 3 + 5;a = 8;
b = a - b; // 3 + 5 - 5 = 3; b = 3;
a = a - b; // 8 - 3 = 5; a = 5;
3.异或运算法 (不建议使用,阅读性较差,适用于面试)
一个数异或一个数两次,结果还是这个数。
a = a ^ b; // a = 3 ^ 5
b = a ^ b; // b = (3 ^ 5)^5 结果 b = 3
a = a ^ b; // a = (3 ^ 5)^3 结果 a = 3
三元运算符 三个元素参与运算的符号
? :
格式 (条件表达式)?表达式1:表达式2 ; 条件表达式的运算结果为true 或者 false
如果运行结果为true 运行表达式1
如果运行结果为false运行表达式2
int x = 3 , y = 4 , z ;//获取两个整数中的较大的整数。
z = (x>y)?x:y //z变量存储的就是两个数的最大数。输出结果为 z=4
int o , p , q ; //获取三个整数中的较大的整数。
int temp = o > p?o : p;
int max = temp > q ? temp : q; |
|