加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

40道Java基础常见面试题及详细答案

发布时间:2020-12-31 18:23:55 所属栏目:运营 来源:网络整理
导读:副标题#e# 最近看到网上流传着各种面试经验及面试题,往往都是一大堆技术题目贴上去,但是没有答案。 为此我业余时间整理了40道Java基础常见的面试题及详细答案,望各路大牛发现不对的地方不吝赐教,留言即可。 八种基本数据类型的大小,以及他们的封装类

如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线程的情况下,还是建议使用速度比较快的StringBuilder。

Map

  • Map是键值对,键Key是唯一不能重复的,一个键对应一个值,值可以重复。
  • TreeMap可以保证顺序。
  • HashMap不保证顺序,即为无序的。
  • Map中可以将Key和Value单独抽取出来,其中KeySet()方法可以将所有的keys抽取正一个Set。而Values()方法可以将map中所有的values抽取成一个集合。

Set

  • 不包含重复元素的集合,set中最多包含一个null元素。
  • 只能用Lterator实现单项遍历,Set中没有同步方法。

List

  • 有序的可重复集合。
  • 可以在任意位置增加删除元素。
  • 用Iterator实现单向遍历,也可用ListIterator实现双向遍历。

Queue

  • Queue遵从先进先出原则。
  • 使用时尽量避免add()和remove()方法,而是使用offer()来添加元素,使用poll()来移除元素,它的优点是可以通过返回值来判断是否成功。
  • LinkedList实现了Queue接口。
  • Queue通常不允许插入null元素。

Stack

  • Stack遵从后进先出原则。
  • Stack继承自Vector。
  • 它通过五个操作对类Vector进行扩展,允许将向量视为堆栈,它提供了通常的push和pop操作,以及取堆栈顶点的peek()方法、测试堆栈是否为空的empty方法等。

用法

  • 如果涉及堆栈,队列等操作,建议使用List。
  • 对于快速插入和删除元素的,建议使用LinkedList。
  • 如果需要快速随机访问元素的,建议使用ArrayList。

更为精炼的总结

Collection 是对象集合, Collection 有两个子接口 List 和 Set

List?可以通过下标 (1,2..) 来取得值,值可以重复。?Set?只能通过游标来取值,并且值是不能重复的。

ArrayList , Vector , LinkedList 是 List 的实现类

  • ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的。
  • LinkedList 是线程不安全的,底层是由链表实现的。

Map 是键值对集合

  • HashTable 和 HashMap 是 Map 的实现类。
  • HashTable 是线程安全的,不能存储 null 值。
  • HashMap 不是线程安全的,可以存储 null 值。

Stack类:继承自Vector,实现一个后进先出的栈。提供了几个基本方法,push、pop、peak、empty、search等。

Queue接口:提供了几个基本方法,offer、poll、peek等。已知实现类有LinkedList、PriorityQueue等。

https://segmentfault.com/a/1190000008101567

Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现,它们都是集合中将数据无序存放的。

1、hashMap去掉了HashTable?的contains方法,但是加上了containsValue()和containsKey()方法

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!