2023最新面试题-Java-1
知其然知其所以然
-
Java之父:詹姆斯·高斯林 (James Gosling)。
什么是Java
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念。意思Java不支持多继承、指针。Java语言具有功能强大和简单易用的两个特征。Java语言作为静态面向对象编程语言的代表,极好的实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
JVM、JRE和JDK的关系
JVM
JRE
Java Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang 包:包含了运行Java程序必不可少的系统类,如基本数 据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包
如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JDK
Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发 工具,也包括了JRE。所以 安装了JDK,就无需再单独安装JRE了。其中的开发工 具:编译工具(javac.exe),打包工具(jar.exe)等
JDK的核心版本
而到目前为止,我们的JDK存在了三个版本的长期支持版。分别是JDK8、JDK11和JDK17
我司在由8向11过渡
不过最新20都出来,未来的21好像也是长期支持,技术发展太快,我还是好好搬砖。
这篇文章介绍了JDK版本的迭代核心内容:https://blog.csdn.net/wu6cfp38/article/details/130124836
什么是跨平台性?原理是什么
所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上 运行。
实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安 装相应的java虚拟机, 该系统就可以运行java程序。
什么是字节码?采用字节码的大好处是什么
字节码:Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文 件),它不面向任何特 定的处理器,只面向虚拟机。
采用字节码的好处:
Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的 问题,同时又保留了解 释型语言可移植的特点。所以Java程序运行时比较高效, 而且,由于字节码并不专对一种特定的机器, 因此,Java程序无须重新编译便可 在多种不同的计算机上运行。
先看下java中的编译器和解释器:
Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机 器。这台虚拟的机器在 任何平台上都提供给编译程序一个的共同的接口。编译程 序只需要面向虚拟机,生成虚拟机能够理解的 代码,然后由解释器来将虚拟机代 码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代 码叫做字节 码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每 一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译 器编译后变成字节码,字节码由虚 拟机解释执行,虚拟机将每一条要执行的字节 码送给解释器,解释器将其翻译成特定机器上的机器码, 然后在特定的机器上运 行,这就是上面提到的Java的特点的编译与解释并存的解释。
Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中 解释器-----> 机器可执行的二进制机器码---->程序运行。
Oracle JDK 和 OpenJDK 的对比
1. Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一 次;
2. OpenJDK 是一个参考模型并且是完全开源的,而Oracle JDK是 OpenJDK的一个实现,并不是完全 开源的;
3. Oracle JDK 比 OpenJDK 更稳定。OpenJDK和Oracle JDK的代码几乎 相同,但Oracle JDK有更多的 类和一些错误修复。因此,如果您想开发企 业/商业软件,我建议您选择Oracle JDK,因为它经过 了彻底的测试和稳 定。某些情况下,有些人提到在使用OpenJDK 可能会遇到了许多应用程 序崩溃 的问题,但是,只需切换到Oracle JDK就可以解决问题;
4. 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的 性能;
5. Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过 更新到最新版本获得支持来 获取最新版本;
6. Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可。