package com.java.ceshi;
public class Ceshi{
public static void main(String args[]){
int x = 2,y,z;
boolean a;
System.out.println((int)a);
x *= (y = z = 5);
System.out.println(x);
z = 3;
if(x == (y = z)){
System.out.println(x);
}
a = (y == z);
System.out.println(a);
x = (y & z);
System.out.println(x);
a = (y & 0 && z & 0);
System.out.println(a);
y = 4;
x = (y | z);
System.out.println(x);
a = (y |0 || z |0);
System.out.println(a);
}
}
上面的代码会有两个错误,都是因为&&,|| 操作符两边的数据类型不对,其两边数的操作类型必须是boolean型。
& ,|两边的数的类型可以是整型或者Boolean型,他会根据数的类型进行相应的运算
JAVA语言中的&,&&,|,||之间的区别:
&和&&都可以作为逻辑与的运算符,表示逻辑与(and),当运算符两边表达式结果都为true时,整个运算结果才是true,否则只要有一方为false,则结果都是false。
&&还有短路功能,如果第一个表达式为false,则不会再计算第二个表达式,eg:对于if(str != null && !str.equals(" "))表达式,当str是null时,后面表达式不会执行,就不会出现NullPointerException,如果把&&改为&,就会出现NullpointerException异常。还有一个列子是if( x == 33 & ++y > 0) y的值会增长,if(x == 33 && ++y > 0) y的值不会增长。
&还可以做为位运算符,当两边的操作数都不是boolean型时,&表示按位与操作。我们通常会使用0x0f来与一个整数进行按位与操作,得到这个整数的低4bit位。列如0x31 & 0x0f的结果为0x01。
| 与 || 与上面的& 与 && 相似。