十.小点

1.Lambda表达式就是一个匿名内部类。就是一个匿名内部类或者说是函数式接口中方法的具体实现

(o1,o2)->{ }  只有一个参数,()可以省略。方法实现只有一句,{ }可以省略

2.Comparator接口中compare(o1,o2)方法

如果:o1 > o2  return 正数

换句话说,如果o1在o2的后面,return正数

java默认大的放在后面(升序)

3.Collection接口的子接口:List,Set,Queue(Deque)

Queue是Deque,LinkedList,PriorityQueue的父接口

Queue:单端队列。实现类:LinkedList  方法:offer(e),poll(),peek()  LinkedList可以用作单端队列

Deque:双端队列。实现类:LinkedList   ArrayDeque  方法:入队:offerLast(),offerFirst() 出队:pollFirst,pollLast 访问:peekFirst(),peekLast()

ArrayDeque:用作堆栈时快于 Stack,在用作队列时快于 LinkedList

  (1)ArrayDeque可以用作栈Stack。Deque<Integer> stack = new ArrayDeque<Integer>();

  (2)ArrayDeque可以用作单端队列,双端队列

PriorityQueue实现了Queue接口

4.Stack实现了List接口,继承自Vector

 5.

关于ArrayList和Vector区别如下:

  1. ArrayList在内存不够时默认是扩展1.5倍 + 1个,Vector是默认扩展2倍。
  2. Vector提供indexOf(obj, start)接口,ArrayList没有。
  3. Vector属于线程安全级别的,但是大多数情况下不使用Vector,因为线程安全需要更大的系统开销。

6.

Collections.sort()和Arrays.sort()的区别:

Arrays.sort()排数组(基本类型,引用类型)

Collections.sort()只能排List

两个都可以传入比较器定制排序

7.NullPointerException

声明变量却未赋值,然后我们使用这个变量就会发生NullPointerException

8.transient和static修饰的属性不会被序列化

9.super关键字

子类默认通过super()调用父类无参构造方法,如果父类没有无参构造方法,那么实例化子类时就会报错

解决措施:(1)在父类中定义一个什么都不做的无参构造方法(2)在子类中显示的调用父类的有参构造方法

10.synchronized关键字是用monitorenter和monitorexit两个指令锁住同步块的

11.对象由三部分组成:对象头,实例数据,对齐填充字节

12.定义内部类的好处是:外部类可以访问内部类的所有属性和方法,包括私有属性和私有方法

 13.ClassCastException

向List添加了不同类型的元素,取出的时候可能会发生转型错误

原文地址:https://www.cnblogs.com/midiyu/p/15228661.html