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)在卻輸出了”包含“。
原因就是這樣的寫法是有問(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設(shè)計(jì)模式之原型模式詳細(xì)解讀
這篇文章主要介紹了Java設(shè)計(jì)模式之原型模式詳細(xì)解讀,原型模式屬于創(chuàng)建型設(shè)計(jì)模式,用于創(chuàng)建重復(fù)的對(duì)象,且同時(shí)又保證了性能,該設(shè)計(jì)模式的好處是將對(duì)象的創(chuàng)建與調(diào)用方分離,需要的朋友可以參考下2023-12-12
Java?并發(fā)編程之深入理解"鎖可中斷"機(jī)制
在Java并發(fā)編程中,死鎖(Deadlock)和線程阻塞(Blocking)是開(kāi)發(fā)者最頭疼的問(wèn)題之一,本文給大家介紹Java?并發(fā)編程之深入理解“鎖可中斷”機(jī)制,感興趣的朋友跟隨小編一起看看吧2026-03-03
Java的PriorityBlockingQueue優(yōu)先級(jí)阻塞隊(duì)列代碼實(shí)例
這篇文章主要介紹了Java的PriorityBlockingQueue優(yōu)先級(jí)阻塞隊(duì)列代碼實(shí)例,PriorityBlockingQueue顧名思義是帶有優(yōu)先級(jí)的阻塞隊(duì)列,為了實(shí)現(xiàn)按優(yōu)先級(jí)彈出數(shù)據(jù),存入其中的對(duì)象必須實(shí)現(xiàn)comparable接口自定義排序方法,需要的朋友可以參考下2023-12-12
對(duì)SpringMVC的@RequestParam的解釋
下面小編就為大家?guī)?lái)一篇對(duì)SpringMVC的@RequestParam的解釋。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
基于Spring實(shí)現(xiàn)搜索目錄下指定名稱文件
這篇文章主要為大家詳細(xì)介紹了如何基于Spring實(shí)現(xiàn)搜索目錄下指定名稱文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-08-08
springboot實(shí)現(xiàn)postman中form-data傳參實(shí)現(xiàn)過(guò)程
在項(xiàng)目場(chǎng)景開(kāi)發(fā)中,對(duì)接需求要求使用POST請(qǐng)求傳form-data數(shù)據(jù),使用HttpClient請(qǐng)求時(shí)遇到了415錯(cuò)誤,后改為restTemplate,封裝參數(shù)時(shí)使用LinkedMultiValueMap對(duì)象以解決參數(shù)無(wú)法正確解析的問(wèn)題2026-04-04

