文章目录
java面试题笔记
JAVA的跨平台原理
对于不同的系统,有相对应的不同的java虚拟机(JVM),JVM会屏蔽不同系统指令的差异,对外提供统一的接口(java API),以实现跨平台。
搭建java开发环境的步骤
java开发环境需要什么
集合
集合引入的原因
数组的弊端:
- 只可以存储同一种类型的数据;
- 一旦定义以后,长度不可改变
集合的大分类
集合的分类有两种:
- Collection:只存储值value
- Map:存储键值对key-value
Collection
Collection只存储值value,这种存储方式的集合有两类:
- List:有序的,可重复的
- Set:无序的,不可重复的
List
List存储的数据是有序的,可重复的,派生了两种子类:
- ArraysList:底层实现是数组
- LinkedList:底层实现是链表
ArraysList
底层实现是数组,查找快,插入和删除效率较低
LinkedList
底层实现是链表,查找慢,插入和删除效率较高
数组和链表的区别:
- 存储位置的不同:数组相邻位置的元素在物理空间上也是相邻的,而链表不一定(可能相邻,也可能不相邻);
- 存储空间的不同:数组要求一片连续的空间来存储每一个元素,可能会造成空间的浪费,而链表不一定要连续的空间,可以利用零碎的空间;
- 在操作的效率上:数组查找特定的元素效率比较高(因为可能根据下标索引直接查找到元素),但插入和删除操作效率比较低(因为需要对元素挨个进行移动);而链表的插入和删除操作效率比较高(只需要更改next空间的指向即可),查找效率低(因为需要从第一个元素开始一个一个找到目标元素)
Set
Set存储的数据是无序的,不可重复的。常用的子类有:
- HashSet:无序的
- LinkedHashSet:有序的,根据插入的顺序排序
Map
Map存储数据是以键值对key-value形式来存储的。其中key值不可以重复。
Map常用的子类有:
- HashMap
- HashTable
- CurrentHahMap
HashMap
- HashMap可以把null作为key值和value值
- HashMap是线程不安全的,效率高
HashTable
- HashTable不可以把null作为key值和value值
- HashTable是线程安全的,效率低
CurrentHashMap
CurrentHashMap既保证了线程安全,又保证了效率