一:逻辑操作符:
与:&&
或:||
非:!
二:&& 和 &
&& 逻辑与运算,返回boolean类型,只有当所有条件同时满足时才返回ture,并且有短路作用;
& 既可以做逻辑与运算也可以当做位运算符,当做位运算符时,会将两个数字先转化为二进制数字,然后相同位的数字进行与运算,如果两个数字位数不等,则较少的那个数字高位补足之后再进行计算。
public class Caozuofu {
static boolean xy(int x,int y){
boolean xy = x==y;
System.out.println("执行xy()方法并返回结果:"+xy);
return xy;
}
static boolean yz(int y,int z){
boolean yz = y==z;
System.out.println("执行yz()方法并返回结果:"+yz);
return yz;
}
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 3;
System.out.println("下面测试“&&”的用法:");
boolean two = xy(a,b) && yz(b,c);
System.out.println("“&&”测试结束:" + two);
System.out.println("*************************** 我是分割线 ****************************");
System.out.println("下面测试“&”的用法:");
boolean one = xy(a,b) & yz(b,c);
System.out.println("“&”测试结束:" + one);
System.out.println("*************************** 我是分割线 ****************************");
if(a==b && b==c){
System.out.println("相等");
}else{
System.out.println("不相等");
}
System.out.println("*************************** 我是分割线 ****************************");
System.out.println(170&204);
}
}
输出结果:
下面测试“&&”的用法:
执行xy()方法并返回结果:false
“&&”测试结束:false
*************************** 我是分割线 ****************************
下面测试“&”的用法:
执行xy()方法并返回结果:false
执行yz()方法并返回结果:false
“&”测试结束:false
*************************** 我是分割线 ****************************
不相等
*************************** 我是分割线 ****************************
136
可知,&会运算所有的方法,但是&&只要第一个方法不满足就不再进行运算,这就是传说中的“短路”现象。
三:实验遇到的问题:
1:xy()和yz()方法为什么不能放在main方法之内?
2:xy()&&yz()前面为什么必须boolean boo ?而不能只有一个运算式不管他的返回值?也就是必须这样:boolean boo = xy()&&yz(),不能这样:xy()&&yz()