Java中&與&&的區(qū)別及說明
Java中&與&&的區(qū)別
Java中&和&&都是邏輯與,需要左右兩邊同時滿足條件才可以得到true的結(jié)果。
但是,它們之間也有區(qū)別:
1.&&也叫短路與
當&&左邊的條件不滿足時,就不會判定右邊的條件。
而&不一樣,無論‘&’左邊的條件是否滿足,它都會判定右邊的條件。
比如:
int a = 2; 1>2? && a+1>2?
以上代碼,判定了1>2為假就不會判定a+1>2了。
而如果是 1>2? & a+1>2?,判定了1>2為假,仍會判定a+1>2為真。
2.&可用于位運算
當左右兩邊的條件不是布爾型,而是數(shù)字時,它會進行位運算。
如:2 & 3就是合法的,會進行位運算。
Java中&&和||混用需要注意的情況
&& 和 || 的區(qū)別
相同:
1、&& 和 || 都是邏輯運算符
不同:
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é)果會輸出“ 包含哦!”。但把 “你” 改成 “您” 卻 會輸出 “不包含哦!”
因為如果 || 和 && 混合使用,可以把 || 左邊的: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é)果是:‘’包含哦!“。 但我的本意是這段話:可以包含”你“和”您“ 其中的一項,并且不包含”嗎“。我想讓系統(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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java的PriorityBlockingQueue優(yōu)先級阻塞隊列代碼實例
這篇文章主要介紹了Java的PriorityBlockingQueue優(yōu)先級阻塞隊列代碼實例,PriorityBlockingQueue顧名思義是帶有優(yōu)先級的阻塞隊列,為了實現(xiàn)按優(yōu)先級彈出數(shù)據(jù),存入其中的對象必須實現(xiàn)comparable接口自定義排序方法,需要的朋友可以參考下2023-12-12
springboot實現(xiàn)postman中form-data傳參實現(xiàn)過程
在項目場景開發(fā)中,對接需求要求使用POST請求傳form-data數(shù)據(jù),使用HttpClient請求時遇到了415錯誤,后改為restTemplate,封裝參數(shù)時使用LinkedMultiValueMap對象以解決參數(shù)無法正確解析的問題2026-04-04

