&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false.
此外&还具有短路的功能,即第一个表达式如果为false,则跳过计算第二个表达式。例如:
if (str != null && str.equals("")){
doSomething;
}
如果 str为空,则 str.equals("") 不会被执行,避免后半句出现空指针异常。
如果将&&改为&,则会抛出NullPointerException异常。
if(x==33 & ++y>0) y会增长,if(x==33 && ++y>0)不会增长
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作.
通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01.