JAVA
正则表达式重要知识
自动装箱和拆箱机制
自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。
自动装箱时编译器调用valueOf将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似intValue(),doubleValue()这类的方法将对象转换成原始类型值。
ThreadLocal intLocal = new ThreadLocal();
intLocal.set(4); //autoboxing
集合
集合分为List,Set,Map
List
list是有序的队列,队列中的数据可以重复
ArrayList是一个动态数组,当数组的内存不够时,会自动扩容
ArrayList擅长于随机访问。同时ArrayList是非同步的。
size、isEmpty、get、set、iterator 和 listIterator 操作都以固定时间运行。add 操作以分摊的固定时间运行,也就是说,添加 n 个元素需要 O(n) 时间(由于要考虑到扩容,所以这不只是添加元素会带来分摊固定时间开销那样简单)。
ArrayList在执行add操作时可能会涉及到底层数组的扩容。
ArrayList能够通过数组下标直接定位到指定位置,LinkedList需要从头指针或者尾指针遍历。
ArrayList在非头尾位置进行add或者remove操作,会涉及到数组中其他元素的拷贝。而LinkedList不会拷贝其他位置的元素。
LinkedList是一个双向链表,它除了有ArrayList的基本操作方法外还额外提供了get,remove,insert方法在LinkedList的首部或尾部。
Vector与ArrayList相似,但是Vector是同步的。所以说Vector是线程安全的动态数组
Vector的很多方法之前都加了关键字synchronized,所以是线程安全的。