面试题解4-&和&&的区别

关于&和&&的区别

&运算符有两种用法:1)按位与 2)逻辑与
当&操作符的两边的表达式不是boolean类型时,&表示按位与操作
按位与操作,将左右的数据转化为二进制,然后两个数据每一个二进制位进行与运算,得出的数据就是按位与的运算结果。

例子:4&7

最后得出的结果是一个二进制数100,转换为十进制为4

当&操作符的两边的表达式都是boolean类型时,&表示逻辑与操作
要求运算符左右两端的布尔值都是true整个表达式的值才是true,该表达式两边的表达式都会执行,在两边表达式执行完之后,再得出最终的结果

----------------------------------------------------------------
&&运算符是“短路”与运算,当&&运算符两边的的布尔值全为true时,该表达式的值才为true,与&符号不同的是,如果该运算符的左边表达式值为false,那么会直接判断该表达式值为false,不论右边表达式的值是什么,也就是说不论右边表达式的值是什么,都不会被执行,直接被“短路”掉,所以&&运算符也叫“短路”与。

在大多数情况下,我们使用&&比较多,因为在很多情况下可以提升代码效率。
如果验证用户登录的情况下,可以这样写,username != null &&!username.equals(“”),这样如果用户名为空,右边的表达式会被短路,就不会执行,也不用担心会抛出空指针异常。
逻辑或 | 和短路或 ||运算符的差别类似

posted @ 2020-07-04 13:30  TidalCoast  阅读(165)  评论(0编辑  收藏  举报