== 和 equals的区别
一 == 比较的是指向的地址(堆)是否相同,即比较的是两个对象是否是相同的一个对象
1、*引用数据类型:*两者比较的是指向的堆中的地址,比较的是被操作数是否为同一个对象。(真正意义上的指针操作)
2、基本数据类型:比较的是值,
如是具体的阿拉伯数字的比较,只要数值想等的结果就是true,如:
int a=13 与 long b=13L 与 double c=13.00与float d=13.0都是相同的(为true),a=b=c=d,任意两者比较都是true,其根本原因是因为他们都指向地址为13的堆。
**二 equals比较方法,该方法在没有复写前仍然是比较的堆中地址(等同于),继承Object类,所以适合所有对象
- equals方法没重写时跟==方法没有区别
- equals方法重写的情况下,比较的是两者的内容
这是本地重写的equals犯法,也可以看出不重写就是ee方法
可以看出==和equals的区别,需要注意的是string a=“aa”;可以直接在常量池新建对象,当再次新建相同对象是,会先搜索有没有“aa”对象,有的话直接引用,不在新建,这和new对象有本质区别(只要new就新创建对象);