& 和 && 、||和|的区别?
&&:短路与; &:逻辑与
&&和&都可以表示逻辑与,但他们是有区别的。
- 共同点:他们两边的条件都成立的时候最终结果才是true;
- 不同点:&&只要第一个条件不成立,后面的条件就不再判断,而&判断的是所有条件
@Test
public void withNonDemo() {
int i = 5;
int j = 8;
//if ((i == j) && (80 / 0 == 0)) { //不会报错
if ((i == j) & (80 / 0 == 0)) { //出现 java.lang.ArithmeticException: / by zero
System.out.println("1");
} else {
System.out.println("没有报错");
}
}
使用&&:不会出现错误。因为第一个条件不满足时,直接返回false。如果第一个条件满足才会判断第二个条件。
使用&:出现错误。判断所有条件才会返回。
||:短路或 |:逻辑或
- 共同点:只要两个判断条件其中有一个成立最终的结果就是true。
- 不同点:||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断。
@Test
public void withNonDemo1() {
int i = 5;
int j = 5;
if ((i == j) || (100 / 0 == 0)) {
//if ((i == j) | (80 / 0 == 0)) {
System.out.println("1");
} else {
System.out.println("没有报错");
}
}
使用||:不会出现错误,第一个条件满足直接返回。
使用|:出现错误,所有条件都会进行判断。