Java中&與&&的區(qū)別及說明
Java中&與&&的區(qū)別
Java中&和&&都是邏輯與,需要左右兩邊同時滿足條件才可以得到true的結(jié)果。
但是,它們之間也有區(qū)別:
1.&&也叫短路與
當(dāng)&&左邊的條件不滿足時,就不會判定右邊的條件。
而&不一樣,無論‘&’左邊的條件是否滿足,它都會判定右邊的條件。
比如:
int a = 2; 1>2? && a+1>2?
以上代碼,判定了1>2為假就不會判定a+1>2了。
而如果是 1>2? & a+1>2?
,判定了1>2為假,仍會判定a+1>2為真。
2.&可用于位運(yùn)算
當(dāng)左右兩邊的條件不是布爾型,而是數(shù)字時,它會進(jìn)行位運(yùn)算。
如:2 & 3就是合法的,會進(jìn)行位運(yùn)算。
Java中&&和||混用需要注意的情況
&& 和 || 的區(qū)別
相同:
1、&& 和 || 都是邏輯運(yùn)算符
不同:
1、&& 是 “與” 的意思,在Java中,只有二邊的等式都等于true時,整個等式的結(jié)果才為true,只要二邊的等式有一個為false,整個等式的結(jié)果就為false。
2、&& 具有短路的功能,如果第一個等式為false,則不在比較第二個等式。
3、|| 是 “或” 的意思,在Java中,只要有一個等式的結(jié)果為true時,整個等式的結(jié)果就為true。
&& 和 || 一起使用的時候需要注意的情況
public class test { public static void main(String[] args) { String message = "你還好嗎"; if(message.contains("你") || message.contains("您") && message.contains("?")){ System.out.println("包含哦!"); }else { System.out.println("不包含哦!"); } } }
結(jié)果會輸出“ 包含哦!”。但把 “你” 改成 “您” 卻 會輸出 “不包含哦!”
因?yàn)槿绻?|| 和 && 混合使用,可以把 || 左邊的:message.contains(“你”) 看成一個等式,右邊的:message.contains(“您”) && message.contains("?") 看成一個等式。而這二邊只需要有一個等式成立整個結(jié)果就是true。
我現(xiàn)在把條件改一下:
public class test { public static void main(String[] args) { String message = "你還好嗎"; if(message.contains("你") || message.contains("您") && !message.contains("嗎")){ System.out.println("包含哦!"); }else { System.out.println("不包含哦!"); } } }
輸出的結(jié)果是:‘’包含哦!“。 但我的本意是這段話:可以包含”你“和”您“ 其中的一項(xiàng),并且不包含”嗎“。我想讓系統(tǒng)輸出”不包含“的但現(xiàn)在卻輸出了”包含“。
原因就是這樣的寫法是有問題的。
改成如下方法即可:
public class test { public static void main(String[] args) { String message = "你還好嗎"; if(message.contains("你") && !message.contains("嗎") || message.contains("您") && !message.contains("嗎")){ System.out.println("包含哦!"); }else { System.out.println("不包含哦!"); } } }
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot用多線程批量導(dǎo)入數(shù)據(jù)庫實(shí)現(xiàn)方法
這篇文章主要介紹了SpringBoot用多線程批量導(dǎo)入數(shù)據(jù)庫實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-02-02Java守護(hù)線程實(shí)例詳解_動力節(jié)點(diǎn)Java學(xué)院整理
在Java中有兩類線程:User Thread(用戶線程)、Daemon Thread(守護(hù)線程) 。下面通過本文給大家分享java守護(hù)線程實(shí)例詳解,需要的朋友參考下吧2017-06-06使用注解解決ShardingJdbc不支持復(fù)雜SQL方法
這篇文章主要為大家介紹了使用注解解決ShardingJdbc不支持復(fù)雜SQL方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Spring Boot + thymeleaf 實(shí)現(xiàn)文件上傳下載功能
最近同事問我有沒有有關(guān)于技術(shù)的電子書,我打開電腦上的小書庫,但是郵件發(fā)給他太大了,公司又禁止用文件夾共享,于是花半天時間寫了個小的文件上傳程序,部署在自己的Linux機(jī)器上,需要的朋友可以參考下2018-01-01