FAQ2.17 在执行与运算时, 运算符&和&&有什么区别?
答:
后者是进行与运算,前者也是与的意思,但是按'位'与
比如说:2&5
就是把2和5变成二进制,然后对应的位进行与运算.0 0 为0,1 1 为1,0 1 和1 0 都是0
2-->010
5-->101
000->0
————————————————————————————————————————————————————————————————————————————————————————
// 区别之一:&&的2个操作数只能是boolean型的,而&的操作数可以是boolean,也可以是整型 int i = 1&2; // 能通过编译 int j = 1 && 2; //编译出错 // 区别之二:是否具有短路特性 int x = 1; if( x++ > 100 && x++ >100 ){ } System.out.println(x); // x加了1一次,说明&&具有“短路”的特性 if( x++ > 100 & x++>100){ } System.out.println(x); // x加了2一次,说明&不具有“短路”的特性
————————————————————————————————————————————————————————————————————————————————————————
当判断两个Boolean的时候,&&如果前面已经能知道结果的话是不执行后面的,但是&却是要全部执行
————————————————————————————————————————————————————————————————————————————————————————
&是按位與運算.. &&是邏輯運算符.
按位與運算,相應的位進行與,除了1 & 1為1以外,其他都為0,例如,
00101111 & 00001001 ==00001001
&& 出來的結果是一個boolean值. 兩個條件同時為true的時候,,結果才為true,否則為false
————————————————————————————————————————————————————————————————————————————————————————
& 是位运算符 用于计算出两个表达式的值按位与之后的值.
二进制学过吧, 比如 1 & 1 = 1 ;1 & 0 = 0 ; 0 & 0 = 0
如果将其用在if 语句中当然不会出错, 但你却得不到正确的比较.
&& 是逻辑运算符 条件与运算符用于比较两个布尔值,
true && true = true
true && false = false
false && false = false
————————————————————————————————————————————————————————————————————————————————————————
1.&可以按位与
2.&和&&都可以进行逻辑运算,区别是&&有短路,&没有短路
————————————————————————————————————————————————————————————————————————————————————————
& 可以与 = 组合成“布尔与赋值运算符”或者“按位与赋值运算符”,而 && 就没这个功能啦