&和&&的区别?

&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差异是很是巨大的,虽然两者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之因此称为短路运算是由于,若是&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。不少时候咱们可能都须要用&&而不是&,例如在验证用户登陆时断定用户名不是null并且不是空字符串,应当写为:username != null &&!username.equals(""),两者的顺序不能交换,更不能用&运算符,由于第一个条件若是不成立,根本不能进行字符串的equals比较,不然会产生NullPointerException异常。blog