Java 概述
Java 是一门非常纯粹的面向对象的编程语言,具有功能强大、简单易用的特点。
一、特点
- 支持面向对象
- 通过 JVM 和通用的 class 文件,支持跨平台,一处编写处处运行
- 支持自动垃圾回收
二、运行机制
1. 编译型
编译:使用编译器,将程序源代码编译成可被该平台直接执行的机器代码。
- 在一次编译以后,就可以脱离开发环境独立运行
- 跨平台移植时,往往需要用源代码重新编译
- 运行效率较高
2. 解释型
解释:使用解释器,对程序源代码进行逐行解释和执行,运行完成后,并不保存机器代码。
- 每次执行都需要一次解释
- 可以进行方便的跨平台移植(因为程序代码都是相同的,只要有对应平台的解释器即可)
- 因为每次执行都需要解释,因此效率较低,且不能脱离编译器独立运行
3. Java 运行机制
Java 既是编译型语言,也是解释型语言。
开发人员编写 Java 代码
代码被编译成 .class 文件
Java 虚拟机(即 JVM)解释 .class 文件并运行
4. 跨平台
Java 代码会被变异成字节码文件,这种字节码文件与平台无关,并且可以被 Java 虚拟机解释并执行。因此,只要在特定平台上存在 JVM 的实现,Java 代码就能够在该平台上运行。这使得 Java 实现了 “一次编写,处处运行”。
三、JDK、JRE 和 JVM
1. JDK
Java 程序开发工具包,包含:
- JRE
- 开发工具
- 编译工具
- 运行工具
2. JRE
Java 程序运行时环境,包含 JVM 和运行时所需的核心类库。
3. JVM
Java 虚拟机,识别 .class 文件,并将其转化为计算机能够识别的语言。
四、基本规则
1. 组织形式
(1) 程序应该放置在类中
Java 是一种纯粹的面向对象的程序设计语言,因此 Java 程序必须以类(class)的形式存在,类是 Java 中最小的程序单位。Java 程序不允许可执行语句、方法等成分独立存在,所有的程序部分都必须放在类中。
类的定义格式:
1 |
|
(2) 程序的入口为 main
Java 解释器规定:仅当某个类中包含 main 方法(并且 main 方法由 public static 修饰,返回值为 void,形参为 String[] args),该类才能被编译器执行。
因此,main的写法是固定的:
1 |
|
Java 编译器从 main 开始解释执行,main 方法是程序的入口。
对于一个大型的 Java 程序而言,往往只需要一个入口,其它类被 main 方法直接或间接调用。
当然,可以给每个类都增加一个 main 方法,方便于模块的调试
2. 命名规则
Java 源文件的扩展名必须是 .Java
一个文件中可以定义多个类,但只能定义一个 public 类
若文件中定义了一个 public 类,则文件名应与该类名相同
建议将文件名与类名始终设为相同
建议一个文件只放置一个类
五、Hello World
1. Java 文件
新建 HelloWorld.Java
,填写如下:
1 |
|
2. 编译
1 |
|
3. 执行
1 |
|
六、垃圾回收器
1. 什么是垃圾回收
对于传统的 C/C++ 等编程语言,程序员需要负责回收已经分配的内存。如果没有及时回收内存空间,将引起系统运行速度下降,甚至导致程序瘫痪,这种现象被称为内存泄漏。
而在 Java 中,内存分配及回收都由 JRE 在后台自动进行。JRE 会负责回收那些不再使用的内存,这种机制被称为垃圾回收。
2. 特性
- 垃圾回收机制只负责回收堆内存中的对象,不会回收物理资源(数据库连接、网络连接等)
- 无法精确控制回收机制
3. 优缺点
垃圾回收机制的优点:
- 提升编程效率
- 防止内存泄漏,保证程序安全
垃圾回收机制的缺点:
- 一定程度上会影响程序的性能,因为虚拟机需要对程序中的对象进行跟踪、判断
4. 基本原则
编写 Java 程序时,一个基本原则是:
对于不再需要的对象,不要引用它们,以便让垃圾回收机制及时回收内存空间。
参考
疯狂 Java 讲义