Java知识点

Java面试知识点总结。

1.JVM、JRE和JDK之间的关系

  • JVM(Java Virtual Machine)是Java虚拟机,Java程序需要运行在JVM上,不同的平台可以安装对应的JVM,因此Java语言可以实现跨平台。所谓Java的跨平台性,就是指Java程序一次编译后,可以在不同的系统平台上运行。(Java实现跨平台的原理)
  • JRE(Java Runtime Environment)支持(编译后的)Java程序运行的标准环境,包括JVM和Java的核心类库,主要是java.lang包,包含String、System、Thread等Java核心类。
  • JDK(Java Development Kit)支持Java程序开发的最小环境,包括JREJava开发工具,比如编译工具javac.exe、打包工具jar.exe等。

2.final、finally和finalize的区别

  • final关键字可以修饰属性方法。修饰类表示该类不能被继承;修饰方法表示该方法不能被重写;修饰变量表示该变量是一个常量不能被重新赋值
  • finally用于Java异常处理机制,一般和try…catch…一同使用,不论try代码块中是否出现异常,finally代码块都会被执行。一般在finally代码块中执行一些资源回收的操作,比如关闭打开的文件,删除临时文件等。
  • finalize()是Object类的一个方法,Object类是所有类的父类。当某个对象被GC(通过可达性分析算法)判定为可回收时,GC会调用对象的finalize()方法(最后一次自救的机会)。如果对象的finalize()方法被覆写了,并且在覆写后的方法中,为该对象重新建立从GC Roots可达的引用,那么可以实现该对象的自我救赎。但是finalize()具有不确定性只保证方法会调用不保证任务能执行完,比如一个对象手脚不够利索,磨磨唧唧,还在方法执行的过程中,就被杀死回收了。因此这个方法并没有什么鸟用。

3.

文章作者: Moon Lou
文章链接: https://loumoon.github.io/2021/03/12/Java知识点/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Moon's Blog