&与&&的区别,|与||的区别,==与equals区别

&与&&的区别,|与||的区别,==与equals区别

一、&与&&的区别

&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。

1、最终结果一样。

2、&无论左边是false还是true,右边都执行。

3、&&具有短路效果,左边是false,右边不执行。

4、&&效率更高,项目中推荐使用。

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

二、|与||的区别

1、最后的结果一样。

2、|无论左边是false还是true,右边都会执行。

3、||具有短路效果,左边是true,右边不执行。

4、||效果效率更高,项目中推荐使用。

三、= =与equals区别

1、若类没有覆盖equals方法,则通过equals方法比较俩个对象时,等价于通过= =比较这俩个对象。
2、类覆盖了equals方法。则按照覆盖方法的逻辑进行判断。如String类的equals方法是被重写过的。比较的是俩个对象的值而不是内存地址。
3、= =的作用是判断俩个对象的内存地址是不是相等,即判断俩个对象是不是同一个对象。(基本数据类型比较的是值,引用数据类型比较的是内存地址)

————————————————
版权声明:本文为CSDN博主「isjun26」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenzuen113113/article/details/79960083

发布了32 篇原创文章 · 获赞 13 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43519048/article/details/104389929
今日推荐