- 联系方式:1761430646@qq.com
- 菜狗摸索,有误勿喷,烦请联系
1. ==和equals的区别
1.1 ==
- A== B
- 如果比较的是基本数据类型,int ,double,则比较的是它们的值
- 如果比较的是对象,则比较它们所指向的内存地址是否相同
-
这里的字符串==比较特殊
-
如果字符串是直接赋值,按常量方式相比
-
如果字符串是new出来的
- a + b底层调用的是StringBuilder的拼接,相当于在堆中创建了一个字符串对象,c指向的是字符串常量池中的“abc”,而d指向的是堆中有的一个值为“abc”的字符串对象,所以它们指向的内存地址不同
-
1.2 equals
- A.equals(B)
- 只能比较引用类型
- 主要看要比较的类有没有重写父类Object的equals方法
-
如果没有,A.equals(B)等同于 == ,相当于比较内存地址
-
如果有,则按照重写的equals方法的比较方式来比较
-