“&&” 与 “||”
关系运算符 (返回ture / false)
&& 表示逻辑 " 与 " ,|| 表示逻辑 " 或 " ,&& 和 || 是按照 " 短路 " 方式求值的。
如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。
如果用 && 对两个表达式进行计算:
expression1 && expression2
并且第一个表达式的值为false,结果不可能为真。因此第二个表达式的值就没有必要计算了。
这种方式可以避免一些错误的发生。
例如,表达式:X != 0 && 1/X > X + Y // no division by 0
当X为0时,不会计算第二部分。因此,如果x为0,1/x不被计算,也不会出现除以0的错误。
对于 expression1 || expression2
当第一个表达式为true时,结果自动为true,不必计算第二部分。
如果第一个表达式为false,则第二个表达式将被执行计算,若第二个表达式为true,则结果为true;
即:只要两个表达式其中一个为true时,结果就为true;否则结果为false;
“&” 与 “|”
位运算符
此过程需要用到二进制去运算。
例如:
十进制数:
A=10;
B=15;
转换成二进制数:(关于二进制转换请参考:http://jingyan.baidu.com/article/597a0643614568312b5243c0.html)
A=1010;
B=1111;
A & B=1010;
A | B=1111;
A ^ B=0101;
~ A=0101;
下表列出了位运算符的基本运算,假设整数变量A的值为60和变量B的值为13:
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | 如果相对应位都是0,则结果为0,否则为1 | (A | B)得到61,即 0011 1101 |
^ | 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位补运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |