一:逻辑操作符:
与:&&
或:||
非:!
二:&& 和 &
&& 逻辑与运算,返回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()