Java概述
1、什么是Java?
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
Java语言作为静态面向对象编程语言的优秀代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
2、Java 语言的优点?
- 平台无关性,摆脱硬件束缚,"一次编写,到处运行",保证这一点的是 Java 的虚拟机机制。
- 相对安全的内存管理和访问机制,避免大部分内存泄漏和指针越界。
- 面向对象(封装,继承,多态)
- 支持多线程。C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持。
- 热点代码检测和运行时编译及优化,使程序随运行时间增长获得更高性能。
- 编译与解释并存
3、Java 如何实现平台无关?
Java通过规定Java语言中基本数据类型的取值范围和行为,统一Java文件编译成Class文件,并且最后由Java虚拟机将Class文件转换成对应平台的二进制文件,才实现了平台无关性。
Java对于平台无关性的支持是分布在整个Java体系结构中的。主要体现在Java虚拟机、Class文件、Java语言规范。
- Java语言规范
- 规定Java语言中基本数据类型的取值范围和行为
- Java虚拟机
- 通过Java虚拟机将Class文件转成对应平台的二进制文件等
- Class文件
- 所有Java文件要编译成统一的Class文件
Java的平台无关性是建立在Java虚拟机的平台有关性基础之上的,是因为Java虚拟机屏蔽了底层操作系统和硬件的差异。
4、JVM,JDK 和 JRE 的区别?
JDK: Java Development Kit,开发工具包。提供了编译运行 Java 程序的各种工具,包括编译器、JRE 及常用类库,是 JAVA 核心。
JRE: Java Runtime Environment,运行时环境,运行 Java 程序的必要环境,包括 JVM、核心类库、核心配置工具。
JVM:Java Virtual Machine,Java虚拟机,Java程序运行在Java虚拟机上。针对不同系统的实现不同的JVM,因此Java语言可以实现跨平台。
JDK包含JRE,JRE包含JVM。
5、什么是字节码?采用字节码的好处是什么?
所谓的字节码,就是Java程序经过编译之类产生的.class文件,字节码能够被虚拟机识别,从而实现Java程序的跨平台性。
Java 程序从源代码到运行主要有三步:
- 编译:将我们的代码(.java)编译成虚拟机可以识别理解的字节码(.class)
- 解释:虚拟机执行Java字节码,将字节码翻译成机器能识别的机器码
- 执行:对应的机器执行二进制机器码
只需要把Java程序编译成Java虚拟机能识别的Java字节码,不同的平台安装对应的Java虚拟机,这样就可以实现Java语言的平台无关性。
6、为什么说 Java 语言“编译与解释并存”?
高级编程语言按照程序的执行方式分为编译型和解释型两种。
- 简单来说,编译型语言是指编译器针对特定的操作系统将源代码一次性翻译成可被该平台执行的机器码;解释型语言是指解释器对源程序逐行解释成特定平台的机器码并立即执行。
- 比如,你想读一本外国的小说,你可以找一个翻译人员帮助你翻译,有两种选择方式,你可以先等翻译人员将全本的小说(也就是源码)都翻译成汉语,再去阅读,也可以让翻译人员翻译一段,你在旁边阅读一段,慢慢把书读完。
Java 语言既具有编译型语言的特征,也具有解释型语言的特征,因为 Java 程序要经过先编译,后解释两个步骤,由 Java 编写的程序需要先经过编译步骤,生成字节码(\*.class 文件),这种字节码必须再经过JVM,解释成操作系统能识别的机器码,在由操作系统执行。因此,我们可以认为 Java 语言编译与解释并存。