& 与 &&的区别?
笔试:
&运算符有两种用法:
- 按位与
- 逻辑与
&&运算符的短路与运算,逻辑与跟短路与的差距很大,虽然二者都要求运算符左右两端的布尔值都是true,整个表达式的值才是true,&&之所以称作短路运算,是因为如果&&左边的表达式的值为false,右边的表达式会直接被短路掉,不会进行运算.& 与 &&的区别.
面试:
&运算符有两种用法:
- 按位与
- 逻辑与
&&运算符的短路与运算,逻辑与跟短路与的差距很大,虽然二者都要求运算符左右两端的布尔值都是true,整个表达式的值才是true,&&之所以称作短路运算,是因为如果&&左边的表达式的值为false,右边的表达式会直接被短路掉,不会进行运算.& 与 &&的区别,很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null 而且不是空字符串,应当写为username != null &&!username.equal("),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals 比较,否则会产生NullPointerException 异常。注意:逻辑或运算符(|)和短路或运算符(|) 的差别也是如此。