&&和&有什么区别?
&&和&区别如下:
1、&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
2、&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(""))表达式。
当str为null时,后面的表达式不会执行,所以不会出现NulIPointerException如果将&&改为&,则会抛出NullPointerException异常。lf(x==33&++y>0) y会增长,lf(x==33&&++y>0)不会增长。
3、&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用OxOf来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31& OxOf的结果为Ox01。
最早是拉丁语et(意为and)的连写。最早的&很像E和的组合,随着印刷技术的发展,这个符号逐渐形成自己的样式并脱离其原始影子。英文中代表and,也可读and 该字符读音“z'da”。
在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。