Java核心技术36讲读书笔记

Java核心技术36讲读书笔记

这是在极客头条上的一个专栏的读书笔记

文章目录

  • Java核心技术36讲读书笔记
    • 谈谈你对java平台的理解
      • 解答
      • 扩展
        • jdk中常用的调试工具有哪些?
        • 编译执行和解释执行的区别?常见的编译语言和解释语言都有哪些?
    • Exception和Error的区别
      • 解答
      • 扩展
        • 常见的Error和Exception都有哪些
        • NoClassDefFoundError和ClassNotFoundException有什么区别
        • 如何自定义异常
        • 异常的捕获原则
    • 谈谈final,finally,finalize的区别
      • 解答
      • 扩展
        • Java中finally什么情况下回不执行
        • Java中String类为什么要被final修饰

谈谈你对java平台的理解

解答

java平台的主要优势体现在两个方面,一个是“一次编写,到处运行”,就是跨平台的特性,另外一个是GC,就是“垃圾回收器”,通常情况下java程序员不需要自己关心内存的分配和回收。
java的开发中会解除到jre和jdk,jre是java的运行环境,包含了java类库和jvm。而jdk是jre的一个超集提供了更多工具,比如:编辑器,各种诊断工具。
java源码通常情况下,通过javac编译为字节码,然后,运行时jvm内嵌解释器将字节码转换为机器码。但是常见的jvm通常提供了JIT动态编译器,JIT能够将热点代码编译为机器码,也就是直接编译执行了。

扩展

jdk中常用的调试工具有哪些?

jconsole:实时图形化监测工具。
jdb:对程序进行调试的工具。
这些工具通常会在IDE中有对应的工具,所以直接使用jdk的工具的情况并不多

编译执行和解释执行的区别?常见的编译语言和解释语言都有哪些?

编译执行是利用事先编写好的成为编写程序的机器语言程序,作为系统软件存放在计算机内,当高级语言源程序进入计算机,被这个翻译成目标程序,以完成源码要处理的运算并取得结果。
解释执行是源程序进入计算机内,解释程序边扫描边解释,逐句输入逐句翻译,计算机一步一步执行,并不产生目标程序。

Exception和Error的区别

解答

Exception和Error是java平台对不同异常情况的分类,他们都继承了Throwable类,只有继承了Throwable类,才能被捕获或者抛出。
Exception是程序运行时可以预料的意外情况,可以主动对他们产生的异常情况进行处理。Exception分为可检查异常和不可检查异常,可检查异常必须进行显示的异常捕获处理,否则会造成编译错误。不检查异常时运行时异常,比如NullPointerException(空指针),ArrayIndexOutOfBoundsException(数组下表越界),不强制要求捕获。
Error是指大多数情况下不大可能出现的情况,大多数的Error会导致程序处于非正常的状态。

扩展

常见的Error和Exception都有哪些

  • 常见的Error:OutOfMemoryError、NoClassDefFoundError
  • 常见的Exception:ClassNotFoundException、NullPointException

NoClassDefFoundError和ClassNotFoundException有什么区别

名称 NoClassDefFoundError ClassNotFoundException
继承的类 从java.lang.Exception继承,是一个Exception类型 从java.lang.Error继承,是一个Error类型
报错原因 当动态加载Class的时候找不到类会抛出该异常 当编译成功以后执行过程中Class找不到导致抛出该错误
报错时机 一般在执行Class.forName()、ClassLoader.loadClass()或ClassLoader.findSystemClass()的时候抛出(反射) 由JVM的运行时系统抛出(编译完成后将其中一个用到的类删除)

如何自定义异常

必须继承Exception,只有继承Exception才能被throw和throws

异常的捕获原则

  • 第一:尽量捕获特定的异常,不要捕获Exception异常,捕获特定的异常更有利于代码的阅读。
  • 第二:不要生吞异常,在异常处理的时候,要对异常合理捕捉或者上上抛出,并在捕获异常时打印日志方便异常定位处理。

谈谈final,finally,finalize的区别

解答

  • final可以用来修饰类,变量,方法。作用不同,修饰类的时候类不能被继承,修饰变量的时候不能被修改,修饰方法的时候不能被重写。
  • finally用来保证代码一定会被执行,通常用来关闭流,数据库连接等。
  • finalize是基础类Object的一个方法,作用是在对象被GC回收之前执行的方法,在现在的Java程序中不建议使用

扩展

Java中finally什么情况下回不执行

  • 1.停电 。 2.执行了System.exit();主动退出了程序。

Java中String类为什么要被final修饰

  • 回答final关键字的作用就可以了。

你可能感兴趣的:(Java,读书笔记)