回答这个问题方法:
先说两者的共同点,再说出&&和&的特殊之处,并列举一些经典的例子来表明自己理解透彻深入、实际经验丰富。
共同点:&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
不同点:
1、&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,
如果将&&改为&,那么俩个表达式都会执行,不管第一个表达式是否为false。
回答到这里是一般人做法,那么我们如果是面试大厂,那么你就需要在加上,它的好处
比如内存优化,代码优化,你都可以衍生点,如果这个是在一个循环语句中套着一个if判断,如果是安50次循环来计算,那么他少执行了50次判断,这样回答比较完美了。
2、&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位。(同样的到这里一般人回答就结束了)
那么我们要说说什么位运算,这样第一可以说明我们是真的理解这个题不是说在背面试。
第二说明我们有专研的精神,位运算大家自己根据自身情况来说。
二、代码
例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException。
如果将&&改为&,则会抛出NullPointerException异常。if(x==33 & ++y>0) y会增长,if(x==33 && ++y>0)不会增长,说明
更多关于“Java培训”的问题,欢迎咨询千锋教育在线名师。千锋已有十余年的培训经验,课程大纲更科学更专业,有针对零基础的就业班,有针对想提升技术的好程序员班,高品质课程助理你实现java程序员梦想。