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