[Java中,&&與&,||與|的區(qū)別]
在Java的邏輯運(yùn)算符中,有這么四類:&&(短路與),&,|,||(短路或)。
||和|都是表示“或”,區(qū)別是||只要滿足第一個(gè)條件,后面的條件就不再判斷,而|要對所有的條件進(jìn)行判斷。
看下面的程序:
package test;
public class test {
public static void main(String[] args) {
if ((23 == 23) || (100 / 0 == 0)) {
System.out.println("運(yùn)算沒錯");
} else {
System.out.println("沒有報(bào)錯");
}
}
}
此時(shí)輸出“運(yùn)算沒有問題”。若將||改為|則會報(bào)錯。
原因是: || 判斷第一個(gè)條件為true,后面的條件就沒有進(jìn)行判斷就執(zhí)行了括號中的代碼,而 | 要對所有的條件進(jìn)行判斷,
所以會報(bào)錯。
&&和&都是表示與,區(qū)別是&&只要第一個(gè)條件不滿足,后面條件就不再判斷。而&要對所有的條件都進(jìn)行判斷。
看下面的程序:
package test;
public class test {
public static void main(String[] args) {
if ((23 == 23) && (100 / 0 == 0)) {
System.out.println("運(yùn)算沒錯");
} else {
System.out.println("沒有報(bào)錯");
}
}
}
使用 && 或者 & 就會如下錯誤:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at test.test.main(test.java:8)
原因是:&&時(shí)判斷第一個(gè)條件為false,后面的100/0==0這個(gè)條件就沒有進(jìn)行判斷。
&時(shí)要對所有的條件進(jìn)行判斷,所以會對后面的條件進(jìn)行判斷,所以會報(bào)錯。