& 和 && 的区别
& 运算符有两种用法
- 按位与
- 逻辑与
&& 运算符
- && 是 短路与 运算
区别
- 如果 && 左边的表达式的值是 false,将不会再进行右边的运算,整体直接为 false
- 而 & 即便左边的表达式的值是false,也会进行右边的运算后再对整体赋值为false
- 很多时候我们需要用 && 而不是 & ,例如在 用户登录时候 判断用户名 不是null而且不是 空字符串的时候, 必须 写成
username != null && !username.equal("")
两者的顺序不能交换,更不能使用 & ,否则 会产生 NullPointerException 异常
- 逻辑或 | 运算符 和 短路或 || 运算符的差别也是如此