Loading

Java面试题汇总(持续更新)

1. ==和equals的区别

答:

  • 基础数据类型比较:只能使用==,比较值是否相等
  • 引用数据类型比较:
  • 没有重写equals方法:==和equals没有区别,比较的都是引用是否指向了同一块内存
  • 重写了equals方法:equals比较的是引用的对象内容是否相等(在javaBean规定中当重写equals时必须重写hashCode,两个对象的equals相等,hashCode也必须相等,如果不相等就会造成相同的对象在HashSet存储中存储两次)

2. 堆与栈的区别

答:1. 栈内存存储的是局部变量,而堆内存存储的是实体
2. 栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短
3. 栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时回收


3.HashMap与HashSet的区别

答:

HashMap HashSet
实现了Map接口 实现了Set接口
存储键值对 仅存储对象
调用put()向map中添加元素 调用add()方法向Set中添加元素
HashMap使用键(Key)计算Hashcode HashSet使用成员对象来计算hashcode值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false
HashMap相对于HashSet较快,因为它是使用唯一的键获取对象 HashSet较HashMap来说比较慢
posted @ 2020-07-16 21:50  Schieber  阅读(217)  评论(0编辑  收藏  举报