1.逻辑和运算符有两种形式:&&与&,二者的不同之处在于,当第一个表达式为假时,&&运算符会短路
public static void main(String[] args) {
int x=0;
if((x!=0)&&(x++>10)){
}
System.out.println(x);//x=0,第一个表达式为假,第二个表达式x++就不再发生
}
而&运算符效果如下
public static void main(String[] args) {
int x=0;
if((x!=0)&(x++>10)){
}
System.out.println(x);//x=1 虽然第一个为假,但是x++依然执行了
}
2.同理逻辑与也有两种形式:||与|
当第一个表达式为真时,||会造成短路
public static void main(String[] args) {
int x=0;
if((x==0)||(x++>10)){
}
System.out.println(x);//x=0,x++没有执行
}
而|则不会
public static void main(String[] args) {
int x=0;
if((x==0)|(x++>10)){
}
System.out.println(x);//x=1,x++执行
}
使用的时候可能忽略了这些细节,仅此记下