本文最后更新于41 天前,其中的信息可能已经过时,如有错误请发送邮件到1169063119@qq.com
hashcode、equals以及==的区别
hashcode用于散列存储结构中确定对象的存储位置。用于快速比较对象是否不同,因为如果他们的哈希码不同,那么他们肯定不相等
equals用于比较两个对象的内容是否相等(逻辑上的相等),通常需要重写自定义比较逻辑
==用于比较两个引用是否指向同一个对象(即内存地址)。用于基本数据类型,比较他们的值
Arraylist,Vector和Linkdlist 的区别
ArrayList基于动态数组实现,元素在内存中连续存储。查询快,插入和删除操作慢,尤其在中间插入或者删除时,因为需要移动后续元素。线程不安全
LinkList基于双向链表实现,元素通过节点链接,内存中不需要连续存储。查询慢,插入和删除操作快,尤其是在头尾插入和删除时。线程不安全
Vector基于动态数组实现,元素在内存中连续存储。查询快,插入和删除操作慢,尤其在中间插入或者删除时,因为需要移动后续元素。线程安全。
Set里的元素是不能重复的,那么用什么方法来区分重复
与否呢? 是用==还是equals()? 它们有何区别?
Set判断重复不是用==也不是单纯用equals(),而是先看hashCode()的返回值,再调用equals()确认内容
是否一样。
== 比较的是地址,是不是同一个对象;equals() 默认没重写的话跟==一样,但很多类比如String、Integer都重写了它,则按照重写的equals方法的规则;而hashCode()决定了这个对象在哈希结构里的存储位置。
什么是java序列化
序列化就是把内存里的对象状态转成字节流,这样就能:
- 存到文件里(持久化)
- 通过网络传给其他系统(远程调用)
- 放到Redis里缓存(比如用户会话




