1.Java基本数据类型:
数值类型:
整型:byte、short、int、long
非整型:double、float
非数值类型:char[字符]、boolean[布尔]
(面试可能会问哦~)
PS:
byte 1字节 8位
int 4字节 32位
short 2字节 16位
long 8字节 64位
double 8字节 64位
float 4字节 32位
char 2字节 16位
*1字节=8位*
2.集合数据结构
import java.util.Hashtable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Stack;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;
这些所有的集合基本都是基于 collection接口 和 Map 接口
*collection
(1) List
ArrayList,Linklist(常用于频繁插入删除),
Vector:线程安全
Stack:先进后出
(2)Set
HashSet:根据哈希值查找Entry
TreeSet:需要排序的时候用
LinkedHashSet:有序迭代的时候用
Map
TreeMap:需要排序的时候用
HashMap:无序,根据key的哈希值查找Entry
concurrentHashMap:线程安全
LinkedHashMap:有序迭代的时候用
HashTable:线程安全
以下对具体的集合类做具体的分析:
ArrayList:数组集合,无容量限制,非线程安全
LinkedList:基于双向列表的机制,插入创建一个Entry对象,并切换前后元素引用,非线程安全
相对于ArrayList查询效率高,LinkedList优势:add,remove较快,因为只需要操作前后元素,而ArrayList需要操作整个列表, get,set较慢因为ArrayList是有序的,LinkedList需要整个遍历。
Vector:同Arraylist类似,线程安全,可以自动扩容 为2倍(ArrayList1.5倍)
Stack:继承自Vector,压栈,后进先出(push,pop。peek)
所有HashSet都是在加入的时候,先从对象中hashcode一个值,然后通过这个值加入到Set中
HashSet:基于HashMap实现,非线程安全,能存一个null(哈希表通过使用散列表的形式来存贮信息,集合内元素没有特定顺序,且随时会变)
TreeSet:(SortedSet)基于TreeMap实现 ,key需要实现 comparator,实现排序
相对于HashSet,支持排序
LinkedHashSet:根据哈希值来判断元素存贮的位置,同时使用链表来维护元素之前的顺序,所以他是有序的
LinkedHashSet 优势:迭代速度比HashSet好,插入删除查(因为需要维护前后元素的关系)
HashMap:根据数组的中hash码,查找Entry在另外一个数组中的位置,遍历用iterator
HashTable:线程安全,不允许null,便利用enumeration
TreeMap:能排序的map
LinkedHashMap:相对于HashMap,插入的时候有序,所以排序的时候