Java中&與&&的區(qū)別及說(shuō)明
Java中&與&&的區(qū)別
Java中&和&&都是邏輯與,需要左右兩邊同時(shí)滿足條件才可以得到true的結(jié)果。
但是,它們之間也有區(qū)別:
1.&&也叫短路與
當(dāng)&&左邊的條件不滿足時(shí),就不會(huì)判定右邊的條件。
而&不一樣,無(wú)論‘&’左邊的條件是否滿足,它都會(huì)判定右邊的條件。
比如:
int a = 2; 1>2? && a+1>2?
以上代碼,判定了1>2為假就不會(huì)判定a+1>2了。
而如果是 1>2? & a+1>2?,判定了1>2為假,仍會(huì)判定a+1>2為真。
2.&可用于位運(yùn)算
當(dāng)左右兩邊的條件不是布爾型,而是數(shù)字時(shí),它會(huì)進(jìn)行位運(yùn)算。
如:2 & 3就是合法的,會(huì)進(jìn)行位運(yùn)算。
Java中&&和||混用需要注意的情況
&& 和 || 的區(qū)別
相同:
1、&& 和 || 都是邏輯運(yùn)算符
不同:
1、&& 是 “與” 的意思,在Java中,只有二邊的等式都等于true時(shí),整個(gè)等式的結(jié)果才為true,只要二邊的等式有一個(gè)為false,整個(gè)等式的結(jié)果就為false。
2、&& 具有短路的功能,如果第一個(gè)等式為false,則不在比較第二個(gè)等式。
3、|| 是 “或” 的意思,在Java中,只要有一個(gè)等式的結(jié)果為true時(shí),整個(gè)等式的結(jié)果就為true。
&& 和 || 一起使用的時(shí)候需要注意的情況
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é)果會(huì)輸出“ 包含哦!”。但把 “你” 改成 “您” 卻 會(huì)輸出 “不包含哦!”
因?yàn)槿绻?|| 和 && 混合使用,可以把 || 左邊的:message.contains(“你”) 看成一個(gè)等式,右邊的:message.contains(“您”) && message.contains("?") 看成一個(gè)等式。而這二邊只需要有一個(gè)等式成立整個(gè)結(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)在卻輸出了”包含“。
原因就是這樣的寫(xiě)法是有問(wè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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java版微信公眾號(hào)支付開(kāi)發(fā)全過(guò)程
這篇文章主要介紹了Java版微信公眾號(hào)支付開(kāi)發(fā)全過(guò)程,本文通過(guò)實(shí)例相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07
SpringBoot用多線程批量導(dǎo)入數(shù)據(jù)庫(kù)實(shí)現(xiàn)方法
這篇文章主要介紹了SpringBoot用多線程批量導(dǎo)入數(shù)據(jù)庫(kù)實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-02-02
Java守護(hù)線程實(shí)例詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
在Java中有兩類線程:User Thread(用戶線程)、Daemon Thread(守護(hù)線程) 。下面通過(guò)本文給大家分享java守護(hù)線程實(shí)例詳解,需要的朋友參考下吧2017-06-06
使用注解解決ShardingJdbc不支持復(fù)雜SQL方法
這篇文章主要為大家介紹了使用注解解決ShardingJdbc不支持復(fù)雜SQL方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Spring Boot + thymeleaf 實(shí)現(xiàn)文件上傳下載功能
最近同事問(wèn)我有沒(méi)有有關(guān)于技術(shù)的電子書(shū),我打開(kāi)電腦上的小書(shū)庫(kù),但是郵件發(fā)給他太大了,公司又禁止用文件夾共享,于是花半天時(shí)間寫(xiě)了個(gè)小的文件上傳程序,部署在自己的Linux機(jī)器上,需要的朋友可以參考下2018-01-01
Java基于Rest?Assured自動(dòng)化測(cè)試接口詳解
Rest Assured 是一個(gè)基于 Java 的流行的用于測(cè)試 RESTful API 的庫(kù)。這篇文章主要介紹了Java如何基于Rest?Assured實(shí)現(xiàn)自動(dòng)化測(cè)試接口,需要的可以參考一下2023-03-03
Java利用EasyExcel讀取寫(xiě)入Excel詳情
這篇文章主要介紹了Java利用EasyExcel讀取寫(xiě)入Excel詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
Java通過(guò)Lambda函數(shù)的方式獲取屬性名稱
這篇文章主要介紹了通過(guò)Lambda函數(shù)的方式獲取屬性名稱,實(shí)現(xiàn)步驟是通過(guò)定義一個(gè)函數(shù)式接口, 用來(lái)接收l(shuí)ambda方法引用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10

