1.关于&和&&的区别
"与"逻辑的操作需要若干判断条件全部返回true,最终的结果才为true,如果有一个判断条件为false,name不管有多少个true最终的结果一定就是false。所以在java中针对逻辑"与"操作提供了两类运算符
1)普通与逻辑(&):所有的判断条件都进行判断
2)短路与逻辑(&&):如果前面的判断返回了false,直接中断后续的判断条件,最终的结果就是false。
例:使用普通"与"逻辑运算符
public class TestDemo{
public static void main(String[] args){
//条件1:"5>8" 返回false
//条件2: "1/0==0",执行时会出现ArithmeticException异常导致程序中断
System.out.println(5>8 & 1/0==0);//输出逻辑运算结果
}
}
程序执行结果:
Exception in thread "main" java.lang.ArithmeticException:/ by zero
at TestDemo.main(TestDemo.java:5)
在程序中任何的数字除以0都会产生ArithmeticException算数异常信息,那么也就证明此时两个判断条件全部执行了,但对于此时的程序来讲"5>8"的关系运算结果为false,即后续的所有判断不管返回多少个true最终的结果都只能是false,而此时普通"与"(&)逻辑使用的意义就不大了,那么最好的做法是使用短路"与"逻辑(&&)
例:使用短路"与"逻辑运算符
public class TestDemo{
public static void main(String[] args){
//条件1:"5>8" 返回false
//条件2: "1/0==0",执行时会出现ArithmeticException异常导致程序中断
System.out.println(5>8 && 1/0==0);//输出逻辑运算结果
}
}
程序执行结果:
false
本程序使用短路"与"逻辑,可以发现条件2并没有执行,即短路"与"的判断性能要比普通"与"的要好
2.关于|和||的区别
"或"逻辑运算符的操作特点就是若干个判断条件有一个返回了true,那么最终的结果就为true,所以在java中针对"或"逻辑提供有两类运算符
1)普通"或"逻辑(|):所有的判断条件都执行
2)短路"或"逻辑(||):若干个判断条件如果有判断条件返回true,那么后面的条件将不再判断,最终的结果为true
例:普通"或"逻辑运算
public class TestDemo{
public static void main(String[] args){
//条件1:"8>5" 返回true
//条件2: "1/0==0",执行时会出现ArithmeticException异常导致程序中断
System.out.println(8>5 | 1/0==0);//输出逻辑运算结果
}
}
程序执行结果:
Exception in thread "main" java.lang.ArithmeticException:/ by zero
at TestDemo.main(TestDemo.java:5)
本程序定义了两个判断条件:"8>5" 返回true,"1/0==0"产生ArithmeticException算数异常,由于此时使用了普通"或",则在第一个判断条件返回true后,会继续执行第二个判断条件,此时就产生了异常,而对于此时的程序要注意,如果第一个判断条件已经返回了true,那么后面不管有多少 个false最终的结果都是true,则此时可以考虑使用段路"或"逻辑运算
例:段路"或"逻辑运算
public class TestDemo{
public static void main(String[] args){
//条件1:"8>5" 返回true
//条件2: "1/0==0",执行时会出现ArithmeticException异常导致程序中断
System.out.println(8>5 || 1/0==0);//输出逻辑运算结果
}
}
程序执行结果:
true
本程序利用了段路"或"逻辑进行了判断,通过执行结果可以看出,第二个判断条件并没有执行。因为段路"或"运算符执行性能较高,所以建议开发中对于"或"逻辑应用以"||"为主