1.说一下Java的特点
主要有以下特点:
- 平台无关性:编写一次、到处运行。Java编译器将源代码编译成字节码文件,该字节码文件可以在任何安装了Java虚拟机的系统上运行
- 面向对象:Java是一门严格面向对象的语言,一切皆对象。面向对象编程OOP使得代码更易于维护和重用,包括类、对象、封装、继承、多态等。
- 内存管理:Java有自己的垃圾回收机制,能够自动管理内存和回收不再使用的对象。这样开发者就不需要自己管理内存,大大减少了内存泄漏和其他内存相关的问题。
2.Java为什么是跨平台的
跨平台主要依赖于JVM
我们编写的Java源程序会被Java编译器(javac)编译成字节码文件(.class),Java虚拟机就是负责把字节码文件翻译成特定平台下的机器语言然后运行。
也可以这样子理解:
JVM就是一个“桥梁",一个中间件,是实现跨平台的关键!
所以,运行Java程序必须有JVM的支持。注意跨平台的是Java程序而不是JVM(JVM是C/C++开发的,不同平台下安装不同版本的JVM)

3.JVM、JDK、JRE三者之间的关系?

- JVM:Java虚拟机,是Java程序运行的环境。负责将Java字节码(由Java编译器生成的的.class字节码文件)解释成机器码并执行程序。JVM提供了内存管理、垃圾回收、安全性等功能,使得Java程序具备跨平台性。
- JDK:Java Development Kit Java开发工具包,是开发Java程序所需的工具集合。它包含了JVM、编译器javac、调试器jdb等开发工具,以及一系列类库(如Java标准库和开发工具库)。总之JDK提供了开发、编译、调试和运行Java程序的全部工具和环境。
- JRE:Java Runtime Environment Java运行时环境,是Java程序运行时所需的最小环境。它包含了JVM和一组Java类库,用于执行Java程序。(JRE不包含开发工具,只提供Java程序运行所需的运行环境。)
4.为什么Java解释和编译都有?
Java首先经过编译器编译后生成字节码文件,然后JVM就有两个步骤:编译、解释。

编译性:
Java首先被编译成字节码,JIT会把编译过的机器码保存起来,以备下次使用。
解释性:
JVM中一个方法调用计数器,当累计计数大于一定值的时候,就使用JIT进行编译生成的机器码文件。否则就是用解释器进行解释执行,然后字节码也是经过解释器解释进行解释运行的。
所以Java既是编译型也是解释性语言,默认采用的是解释器和编译器混合的模式。
5.jvm是什么?
JVM:Java虚拟机,是Java程序运行的环境。负责将Java字节码(由Java编译器生成的的.class字节码文件)解释成机器码并执行程序。JVM提供了内存管理、垃圾回收、安全性等功能,使得Java程序具备跨平台性。
6.编译型语言和解释型语言的区别?
- 编译型语言(如C/C++):在程序执行之前,整个源代码会被编译成机器码或者字节码,生成可执行文件。执行时直接运行编译后的代码,速度快,但跨平台性差。
- 解释型语言(如py,js):在程序执行时,逐行解释执行源代码,不生成独立的可执行文件。通常由解释器动态解释并执行代码,跨平台性好,但执行速度相对较慢。

183

被折叠的 条评论
为什么被折叠?



