【Java基础】Java基础题
创始人
2024-02-01 07:16:44
0

1. 重载和重写的区别

1)重载:

  • 发生在同一个类中,要求方法名相同、参数类型不同(个数不同、顺序不同、类型不同)

  • 和方法的返回值和访问修饰符没关系(在只有返回值和访问修饰符不同的这种情况下,编译时会报错)

2)重写: 子类重写父类的方法

  • 方法名、参数列表都相同
  • 子类的返回值范围小于父类
  • 抛出的异常范围小于父类
  • 访问修饰符的范围大于等于父类
  • 如果父类方法访问修饰符为 private 则子类就不能重写该方法

2. List 和 Set 的区别

  • List 有序、可重复、允许多个 null 元素对象,可以使用迭代器取出所有元素,再逐一遍历,还可以使用 get(index) 下标的形式获取指定下标的元素,也就是说支持随机访问
  • Set 无序,不可重复,最多容许一个 null 元素对象,取元素时,只可以使用迭代器接口取得所有元素,再逐一遍历各个元素 (很好理解鸭,它无序,所有肯定不能用 get(index) 这种方式取,下标对它来说无意义)

3. ArrayList 和 LinkedList 的区别

  • 在底层实现上,ArrayList 底层是数组,LinkedList 底层是链表
  • 这样的结构导致了他们的使用场景的区别,ArrayList 更适合随机查找比较多的场景,LinkedList 更适合删除和添加场景比较多的场景
  • ArrayList 和 LinkedList 都实现了 List 接口,但是 LinkedList 还实现了 Deque 接口,也就是说LinkedList 可以当作双端队列的来使用

4. ConcurrentHashMap 的扩容机制

  • jdk 1.7

1.7 中的 ConcurrentHashMap 基于 Segment 实现,每个 Segment 相当于一个小型的 HashMap。当需要进行扩容时,Segment 对象内部进行扩容。和 HashMap 扩容机制类似,先生成新数组,然后将元素转移到新数组中,再修改指针指向新的数组。其对扩容阈值的判断,是基于每个 Segment 内部进行判断的

在这里插入图片描述

  • jdk 1.8

1.8中的 ConcurrentHashMap 不再基于 Segment 实现,其扩容是可以多线程的。扩容之前也生成一个新数组,然后将需要转移的元素分组,每组交给不同线程转移,每个线程负责一组或多组的转移工作。若是出现扩容时,一线程想 put 的情况,则该线程帮忙一起扩容

在这里插入图片描述


相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...