Java核心技术笔记三

1. 接口中支持默认方法实现。必须以default来标记。
2. lambda表达式就是一个代码块,它里面捕获的变量,在变量初始化后就不能再变化。因为考虑并行情况时,并行的基础之一就是引用变量的最终性。
3. lambda表达式的重点是延迟执行。
4. 对于只有一个抽象方法的接口,需要这种接口对象时,就可以提供一个lambda表达式,这种接口称为函数式接口。
5. 内部类可以访问外部类的成员,编译时会把外部类当做内部类的一个引用,在内部类的构造函数里传递进去。而由于无法确定内部类何时执行和调用外部类变量,所以能被内部类访问的一定是final变量,因为final是不会变的,编译时直接将变量的值拷贝至内部类中,另外如果编译时无法确定变量的值,则将该变量直接加到内部类的构造函数中。
6. 异常处理的目标:

  • 向用户通报错误。
  • 保存所有的工作结果。
  • 允许用户以妥善的形式退出程序。

7. Throwable分为Error和Exception。

  • Error类代表Java运行时系统的内部错误和资源耗尽错误。如果出现此类错误,代表除了告知用户并尽力使程序安全终止外,再也无能为力。
  • Exception分出RuntimeException和IOException。
  • RunTimeException代表由程序错误导致的异常。
  • IOException代表程序本身无问题,是其他导致的,如I/O错误。

8. 一个方法必须声明所有可能抛出的受查异常,而非受查异常要么不可控制(Error),要么就程序就可以避免其发生(RuntimeException)。
9. e.initCause(e)和e.getCause()两个方法可以用来转换异常类型且不丢失异常信息。
10. 使用异常机制的原则:

  • 只在异常情况下使用异常机制:存在部分同学使用catch来跳转代码的情况。
  • 不要过分细化异常,一次一次try,多次catch。
  • 利用异常层次结构,抛出和捕获异常时可以更加精确,不要只抛RuntimeException,只捕获Exception。
  • 不应该捕获了异常而不做任何处理。
  • 不要羞于传递异常:能处理的异常就处理,不能处理的就主动传递出去。


参考:https://www.cnblogs.com/dolphin0520/p/3811445.html

猜你喜欢

转载自www.cnblogs.com/qt2136/p/12517295.html
今日推荐