常见Java面试题之&和&&的区别?

简介: 常见问题

&和&&区别分析

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


本题涉及java知识点分析

逻辑与运算符&

&,双目运算符:将两个表达式的值按二进制位展开,对应的位(bit)按值进行“与”运算,结果保留在该位上。

比如170&204

对应二进制就是

10101010B & 11001100B =10001000B…

170&204=136…

该位只要有一个值为0结果为0,否则结果为1。

如果两数位数不同,则较短数高位补零,再运算,比如char a=100;int b=260;


短路与运算符&&

&&:双目运算符,计算两个表达式同时成立的“真值”(同时成立真值为真否则为假)

逻辑真值有两种,1为真,0为假,但在运算时用非零表示真,0表示假。

即:数值->逻辑真值--非0为真,0为假/逻辑真值->数值--真为1,假为0。

例如:char a=1,b=0,c=-1;那么a真b假c真。a&&b和c&&b为假值为0,a&&c为真值为1


希望对大家有所帮助。


相关文章
|
2天前
|
JavaScript 前端开发 Oracle
java和JavaScript的区别
java和JavaScript的区别
6 3
|
2天前
|
存储 安全 Java
[Java基础面试题] Map 接口相关
[Java基础面试题] Map 接口相关
|
2天前
|
Java
[Java 面试题] ArrayList篇
[Java 面试题] ArrayList篇
|
3天前
|
Java 调度
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
29 1
|
3天前
|
存储 安全 Java
每日一道Java面试题:说一说Java中的泛型?
今天的每日一道Java面试题聊的是Java中的泛型,泛型在面试的时候偶尔会被提及,频率不是特别高,但在日后的开发工作中,却是是个高频词汇,因此,我们有必要去认真的学习它。
15 0
|
3天前
|
Java 编译器
每日一道Java面试题:方法重载与方法重写,这把指定让你明明白白!
每日一道Java面试题:方法重载与方法重写,这把指定让你明明白白!
15 0
|
7天前
|
XML 缓存 Java
Java大厂面试题
Java大厂面试题
19 0
|
7天前
|
存储 安全 Java
Java大厂面试题
Java大厂面试题
15 0
|
监控 算法 Java
Java 最常见的 208 道面试题(二十)
Java 最常见的 208 道面试题
136 0
|
存储 NoSQL 前端开发
Java 最常见的 208 道面试题(十九)
Java 最常见的 208 道面试题
112 0
Java 最常见的 208 道面试题(十九)