&与&&的区别,|与||的区别,==与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