== 和equals()
== 它的作用是判断两个对象的地址是不是相等,即判断两个对象是不是同一个对象
基本数据类型比较的是值,引用数据类型比较的是地址
equals() 是判断两个对象是否相等,如果没有重写equals() 方法,就和两个等号的意思是一样的
为什么要有hashcode?
为了减少equals()的比较次数,只要当hashcode相同的时候才会进行equals()的比较,极大提高了效率
为什么重写了equals()后就要重写hashcode方法
如果不重写hashcode方法的话,两个对象进行比较的时候就会调用object类的hashcode方法来计算hashcode,而object类的hashcode方法是通过内存地址来计算hashcode的,就可能会导致该class的两个对象无论如何都不会相等的
java对象的四种比较方式
== equals compareTo compare
如何保证元素唯一性?
根据比较元素的返回值是否为0来决定
向TreeSet中添加的数据,要求是相同类的对象
两种排序方式:自然排序(实现Comparable接口)
添加的类实现comparable接口,重写comparaTo()方法
和定制排序comparator
Comparator com = new Comparator(){
//重写compara方法
}
自然排序中,比较两个对象是否相等的标准是:comparaTo() 返回0
定制排序是 compare() 返回0
String类的比较
https://juejin.cn/post/6844903497708601351#heading-9
https://juejin.cn/post/6

本文探讨Java中==与equals的区别,为何需要hashcode方法,以及在重写equals后为何要重写hashcode。介绍了Java对象的四种比较方式,包括String类的比较细节和Integer类的特殊比较行为。同时,讨论了字符串拼接问题和Integer对象在内存中的处理。
1888

被折叠的 条评论
为什么被折叠?



