1.有关final的忠告 : 尽量不要轻易地使用final来修饰方法,因为你不知道后来人是否会需要重写你的方法.final修饰的属性可以为空,但只能在构造函数中初始化它,因为一个类被创建的过程是先得到空类,若直接有:
private final int i = 5;
则先将5赋值给i再执行构造器中的语句,此时还是可以给i复制,构造函数结束后,i被锁定,不可以再被赋值.
2.为什么需要内部类 : 每个内部类都能独立的继承一个接口或者类,这也是java不能多重继承的另一个解决方法;注意,内部匿名类或者方法内的内部类只能够访问final的局部变量.
3.内部类继承 : 一个类如果继承了一个内部类,那么构造方法中要有enclosingClassReference.super();
4.内部类标识符 : java在编译的时候会将内部类标识为外部类名$内部类名,如果是匿名类,则会用数字代替
5.泛型和类型安全的容器 :
看上图,Collection中有List,Set,Queue三种子类,List是列表,顺序存储,set同样的对象只能存一个,Queue是一个队列的结果,先进先出,List分为ArrayList和LinkList, ArrayList查询,快,LinkList插入,删除快,Queue就是通过LinkList实现的,Set分为HashSet和TreeSet,HashSet所存数据无顺序,TreeSet要求实现Comparable接口,每次插入一个元素,会根据排序,将数据存储在红黑树的数据结构上,HashSet有子类LinkedHashSet,表示在内存中储存为链表式结构;Map有HashMap和TreeMap实现,map有键值对,键不可以重复,HashMap的Key和Value可以为Null,TreeMap不可以,TreeMap存储机制类似TreeSet;
Queue是线程安全的;