==与equals的区别
程序员文章站
2022-04-09 15:56:51
==与equals的区别 [TOC] 1.java数据类型分为: 基本数据类型 引用数据类型 2.对于"==" 用于基本数据类型相互比较. 比较二者的值是否相等 用于引用数据类型相互比较. 比较二者地址是否相等 不能用于基本数据类型与引用型比较 3.对于"equals": 不 ......
目录
==与equals的区别
1.java数据类型分为:
基本数据类型
引用数据类型
2.对于"=="
用于基本数据类型相互比较. 比较二者的值是否相等
用于引用数据类型相互比较. 比较二者地址是否相等
不能用于基本数据类型与引用型比较
3.对于"equals":
不能用于基本数据类型比较(因为这是一个方法, 继承自object).
用于进行对象的比较, 比较二者的引用地址是否相同
4.特殊情况:
1)数值型基本类型和数值型类会存在自动装箱和自动拆箱
2)字符串会以常量形式存在, 如果多个字符串变量值相同, 他们指向同一个地址,string类重写了equals()方法,比较的是内容是否相等。
3)数值类型会存在类型自动转换
5.关于重写equals
1)判断该对象是否是其本身:this==obj
2)判断该对象是否为空:obj==null
3)判断该对象是否和其属于同一类型:obj instanceof ** 或者 obj.getclass == *.class
4)逐一比较,如全相同则是相等
6.思考
如果是hashmap又要如何重写呢?如何判断里面存储的对象是否相等?参考hashset的实现源码。