java中的&与&&,| 与 | | 的异同及使用
1.逻辑运算符&和&&的区分
& : 叫做按位与
&&:叫做短路与
下面我们直接用一段代码的运行结果来更加直观的区分&和&&:
&代码:
boolean x=true;
int num1=10;
if(x &(num1++>0))
{
System.out.println("&:A");
}
else {
System.out.println("&:B");
}
System.out.println("num1="+num1);
&&代码:
boolean y=true;
int num2=10;
if(y &&(num2++>0))
{
System.out.println("&&:A");
}
else {
System.out.println("&&:B");
}
System.out.println("num2="+num2);
运行结果:
从以上&和&&的代码运行结果来看,&和&&的运行结果相同,参数的值也相同。
接下来我们改变x和y的真值,再来观察运行结果有何变化:
&中对x的真值加以改变:
boolean x=true;
x=false;
int num1=10;
if(x &(num1++>0))
{
System.out.println(" &:A");
}
else {
System.out.println(" &:B");
}
System.out.println(" num1="+num1);
&&中对y的真值也加以相同的改变:.
boolean y=true;
int num2=10;
y=false;
if(y &&(num2++>0))
{
System.out.println(" &&:A");
}
else {
System.out.println(" &&:B");
}
System.out.println(" num2="+num2);
运行结果:
在改变x和y的真值之后我们会发现两者的答案相同,但是我们会发现参数的值却不相同。
由此我们可得出结论:
相同点:
1.运算结果相同
2.当符号左边都是true时都会执行符号右边的运算
不同点:
1.当符号左边为flase时,&会执行右边的运算,&&不会执行右边的运算
2.区分 | 和 | |
| | 和 | 都是表示“或”的意思
|、| |和&、&&有着相同之处,我们把上边的代码进行修改就可以直接进行运用
|代码:
boolean x=true;
x=false;
int num1=10;
if(x |(num1++>0))
{
System.out.println(" |:A");
}
else {
System.out.println(" |:B");
}
System.out.println(" num1="+num1);
| |代码:
boolean y=true;
y=false;
int num2=10;
if(y ||(num2++>0))
{
System.out.println(" ||:A");
}
else {
System.out.println(" ||:B");
}
System.out.println(" num2="+num2);
运行结果:
从运行结果上来看 | 和 | | 两者的运行结果相同,参数也同样相同。
接下来我们对x和y的真值加以改变
|代码:
boolean x=true;
int num1=10;
if(x |(num1++>0))
{
System.out.println(" |:A");
}
else {
System.out.println(" |:B");
}
System.out.println(" num1="+num1);
| |代码:
boolean y=true;
int num2=10;
if(y ||(num2++>0))
{
System.out.println(" ||:A");
}
else {
System.out.println(" ||:B");
}
System.out.println(" num2="+num2);
运行结果:
在改变x和y的真值之后我们会发现两者的运行结果相同,但是参数不相同
由此我们可得出结论:
相同点:
1.运算结果相同
2.当符号左边都是false时都会执行符号右边的运算
不同点:
1.当符号左边为true时,| 会执行右边的运算,| | 不会执行右边的运算