==就是判断两个引用对象的地址是否相等,如果相等那么值一定相等。
笔者在学习的过程中一直对this关键字深痛恶绝,尤其学习到java后期时,知识点底层实现过多时,容易让我想起来人生第一门挂科的c语言的指针,啊呸。下面我的一点一己之见,希望可以帮助到从开始到放弃的java
图一
通过上面的图一可以看出这是在集合那一块,java本身的equals和hashCode方法远远不足以满足我们的需求。尤其是对象集合的出现让整个学习生涯充满了痛苦。好了话不多说,正题开始:
我们从上面可以看到equlas接收到一个Object o,然后进行判断this==o,意思是当前对象是不是等于传过来的Object类,这个时候我们有两个疑惑,1.这个object是哪个对象 2.这个this对象是哪个this对象。
1.object o对象是你正在进行操作的对象,譬如你进行插入的一个对象数据,Object 是所有数据类型的父类,这样定义,简单明了(哈哈哈,其实并不是)。
2.this 是哪一个对象或者是哪些对象,就拿HashSet集合举例,当我们插入数据的时候,集合本身的特性是不可重复的,集合会自动的判断这个对象是不是和之前的数据相同,如果相同的话就会覆盖。
这个是一个对象,那么传过来的是一个对象地址,这个时候集合就会自动将传入的对象集合进行对比,如果传入的地址相同,即插入的对象是之前就插入过的同一个对象那么这个插入的就毫无意义的相等直接返回而不是继续进行下面可能的判断。这个时候this 就是整个集合对象也是集合中每一个数据对象。