&:按位与
&&:逻辑与(短路与)
共同点:&和&&,二者都要求运算符左右两端布尔值都是true,整个表达式的值才为true。
不同点:如果&&左边表达式为false时,表达式右边运算直接被短路掉(不执行)。
例如:验证用户登录时:判断用户名不为空,且用户名也不为空字符串
if(username!=null&&!username.equals(" "))
//如果第一个表达式不成立,那么就不会进行equals()判断,否则会执行NullPointerException异常
&:按位与
&&:逻辑与(短路与)
共同点:&和&&,二者都要求运算符左右两端布尔值都是true,整个表达式的值才为true。
不同点:如果&&左边表达式为false时,表达式右边运算直接被短路掉(不执行)。
例如:验证用户登录时:判断用户名不为空,且用户名也不为空字符串
if(username!=null&&!username.equals(" "))
//如果第一个表达式不成立,那么就不会进行equals()判断,否则会执行NullPointerException异常