当我们要同时判断多个逻辑运算的时候,就会用到:逻辑运算符
“&&”:运算符前后的操作返回结果都为真,结果为真
“||”:运算符前后的操作返回结果只要有一个为真,结果为真
我们通过代码来看
public
class
Test {
public
static
void
main (String args[]){
boolean
a=
true
;
//定义boolean变量a为true
boolean
b=
false
;
//定义boolean变量b为true
System.
out
.println(
"a&&b="
+(a&&b));
//与操作
System.
out
.println(
"a&b="
+(a&b));
//与操作
System.
out
.println(
"a||b="
+(a||b));
//或操作
System.
out
.println(
"a|b="
+(a|b));
//或操作
}
}
返回结果:
a&&b=false
a&b=false
a||b=true
a|b=true
从上面可以看出与和或的区别,下面我们通过详细的例子来看下与(&)和短路与(&&),或(|)和短路或(||)的差别
public
class
Test {
public
static
void
main (String args[]){
//用具体的实例看起来更直观
/*
* 这里a可以正确的被执行
* 而b不行(被除数为0)
* 正常的情况下b应该会报错
*/
int
a=5/1;
//定义正确的变量
int
b=5/0;
//定义错误的变量
System.
out
.println(a);
System.
out
.println(b);
}
}
返回结果:
Exception in thread "main"
java.lang.ArithmeticException
: / by zero
at test.Test.main(
Test.java:17
)
通过结果来看,我们的推理是正确的
现在我们先加入“&&”、“&”来看下它们之间的区别
1.测试&&
public
class
Test {
@SuppressWarnings
(
"unused"
)
public
static
void
main (String args[]){
//因为加入&&和&运算符,我们假设两个错误的值
if
( 5!=5&&5/0==0) {
System.
out
.println(
"正确"
);
}
}
}
执行结果:
Exception in thread "main"
java.lang.ArithmeticException
: / by zero
at test.Test.main(
Test.java:16
)
出现被除数是0的错误
2.测试&
public
class
Test {
@SuppressWarnings
(
"unused"
)
public
static
void
main (String args[]){
//因为加入&&和&运算符,我们假设两个错误的值
if
( 5!=5&5/0==0) {
System.
out
.println(
"正确"
);
}
}
}
执行结果:
Exception in thread "main"
java.lang.ArithmeticException
: / by zero
at test.Test.main(
Test.java:13
)
仍然返回被除数是0的错误,这是因为“与”运算是将所有的程序运行完,那么或会出现怎么样的结果呢,我们来看看下面的代码
3.测试|
public
class
Test {
@SuppressWarnings
(
"unused"
)
public
static
void
main (String args[]){
//因为加入||和|运算符,我们假设一个正确的和一个错误的
if
( 5==5|5/0==0) {
System.
out
.println(
"正确"
);
}
}
}
执行结果:
Exception in thread "main"
java.lang.ArithmeticException
: / by zero
at test.Test.main(
Test.java:13
)
结果还是报错,被除数为0,这说明,或"|"运算也是要执行所有的语句,那短路或"||"呢,我们接着看
4.测试||
public
class
Test {
@SuppressWarnings
(
"unused"
)
public
static
void
main (String args[]){
//因为加入||和|运算符,我们假设一个正确的和一个错误的
if
( 5==5||5/0==0) {
System.
out
.println(
"正确"
);
}
}
}
执行结果:
正确
这说明短路或“||”只执行了代码中“5=5”就退出程序了,这对于或运算来说就是我们想要的效果,既达到了目的,又提高了代码的利用率