java &與&&的區別: & 既是位運算符又是邏輯運算符,&的兩側可以是int,也可以是boolean表達式,當&兩側是int時,要先把運算符兩側的數轉化為二進制數再進行運算,而短路與(&&)的兩側要求必須是布爾表達式。
我想很多人在學習java的時候,或者面試時都會遇到
&和&&
然而,如果你沒有真正的理解他們的意思,這會給你思路上面帶來很大的麻煩
在這篇blog中,當你看完了以後,你會發現,很容易就把他們給區分開了
下面是我的demo
/**
*
*/
package com.b510.test;
/**
* @author Jone Hongten
* @create date:2013-11-2
* @version 1.0
*/
public class Test {
public static void main(String[] args) {
String str = null;
if(str != null && !"".equals(str)){
//do something
}
if(str != null & !"".equals(str)){
//do something
}
}
}
我們現在可能有一些模糊不清,現在我們先看看&和&&的電路問題:
對於:&&
if(str != null && !"".equals(str))
當: str != null 的時候,接下來才會去執行: !"".equals(str)
如果: str != null為false,那麼這個時候,程序是處於短路的情況,則,!"".equals(str) 是不會執行的。
但是對於:&
if(str != null & !"".equals(str))
不管: str != null 的結果如何(即true,false),程序都會執行: !"".equal(str)
電路問題總結:
對於:& -- > 不管怎樣,都會執行"&"符號左右兩邊的程序
對於:&& -- > 只有當符號"&&"左邊程序為真(true)後,才會執行符號"&&"右邊的程序。
下面來說說運算規則:
對於:& -- > 只要左右兩邊有一個為false,則為false;只有全部都為true的時候,結果為true
對於:&& -- > 只要符號左邊為false,則結果為false;當左邊為true,同時右邊也為true,則結果為true
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!