在知识的海洋里彻底疯狂!!!
1. try-catch-finally
try-catch-finally的执行机制是
- try块是不能被省略的,用于包含可能会抛出异常的代码,如果没有try块,那么之后的catch,finally就没有意义了。
- 先执行try中的语句,若没有异常,则直接跳过catch语句,直接执行finally中的语句,之后,再执行后面的代码。
- 若发现异常,则需要在catch语句中匹配相应的异常类型,如果找到匹配的catch块,则会执行该catch块中的代码,之后执行finally块中的代码。在finally块执行完毕之后,程序会继续往下执行后面的代码。
- 无论是try块还是catch块中的代码,只要遇到了return、continue或break等跳出语句,程序就会立即跳转到finally块中的代码,然后再进行跳出操作。如果finally块中也有跳出语句,则会覆盖之前的跳出行为。
2. 方法调用
如下图,类中的实例方法,可以直接调用本类的类方法
如想调用超类的方法,需要加super或者用类名调用父类的静态方法。
3. 接口
接口中的方法,只能是public或者是默认。接口中的方法,都默认为抽象方法。在Java8后,接口中的方法也可用static修饰,能被接口之外的代码直接调用,也可以在接口内部的其他方法中被调用,但不能被实现该接口的类所调用。
4.
如下图所示,是集合类框架。首先我们要知道的是,父类可以调用子类的构造方法进行实例化,反过来不行。我们可以看到
- Map接口和Iterable为两大接口。
- Collection集合类在Iterable底下,为下面的List,Queue,Set提供接口。
- Vector,ArrayList,LinedList都可继承自List接口。
- 只有LinkedList,PriorityQueue,Deque继承了Queue接口。
- Stack类与PriorityQueue在最底层,Stack继承自Vector类,PriorityQueue继承自Queue接口。
- HashMap直接继承Map接口,而TreeMap继承自SortedMap接口,所以TreeMap存储键值对时会按照键来排序,可以通过比较器或默认的自然排序实现。
- 再往上一层是Vector,ArrayList,LinkedList,TreeSet,HashSet.