7.&和&&有什么区别?

2022-01-01 60 0

&运算符有两种用法:短路与逻辑与

&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是 true 整个表达式的值才是 true。

&&之所以称为短路运算是因为,如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&。

例如在验证用户登录时判定用户名不是 null 而且不是空字符串,应当写为username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的 equals 比较,否则会产生 NullPointerException 异常。

注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

相关文章

深拷贝和浅拷贝?
hashCode 与 equals?
== 和 equals 的区别?
final、finally、finalize 的区别?
final 关键字有什么作用?
18.静态变量和实例变量的区别?静态方法、实例方法呢?

发布评论