### Java 学习笔记知识点梳理
#### 环境配置
- **JAVA_HOME**: 设置 `JAVA_HOME` 环境变量指向 JDK 的安装目录。例如,在 Linux 系统下可以设置为 `/opt/jdk1.5.0_06`。
- **CLASSPATH**: 配置 `CLASSPATH` 变量指向类库路径。如 `.bash_profile` 文件中的配置所示,`CLASSPATH` 包含当前目录(`.`),以及 JDK 安装目录下的 `lib` 目录中的 `tools.jar` 和 `dt.jar` 文件。
- **PATH**: 在 PATH 环境变量中添加 JDK 的 `bin` 目录路径,使得可以在任何位置运行 JDK 提供的命令。
#### 编译与执行流程
- **源代码到可执行程序**: Java 源文件(`.java` 文件)经过编译器(`javac`)编译成字节码文件(`.class` 文件),然后通过 Java 虚拟机(JVM)执行这些字节码。
- **垃圾回收机制(GC)**: Java 自动管理内存,当对象不再被引用时,系统会自动回收这些对象占用的内存空间。可以通过调用 `java.lang.System.gc()` 来提示 JVM 进行垃圾回收,但是否执行取决于 JVM 的具体实现。
- **类加载过程**: 当 Java 应用程序启动时,JVM 会根据需要加载类文件,并在运行时解析并执行其中的方法。
#### Java 类的安全性
- **封装**: Java 使用封装来隐藏对象的内部状态,只暴露必要的方法供外部调用。
- **继承**: 继承允许子类继承父类的属性和行为,从而实现代码重用。
- **异常处理**: 异常处理是 Java 中的重要特性,用于处理运行时错误。主要包括:
- **检查异常**: 必须显式捕获或声明抛出的异常。
- **非检查异常**: 不需要显式处理,通常是编程错误导致的问题。
- **运行时异常**: 表示应用程序运行时出现的错误,通常由编程错误引起。
- **异常处理**: 通过 `try-catch` 语句块处理异常,确保程序在发生异常时能够继续正常运行。
#### 源代码结构
- **包(Package)**: Java 使用包来组织相关的类和接口。例如,可以创建一个名为 `mypack` 的包来存放相关的类。
- **类定义**: 一个 Java 文件可以包含多个类定义,但只能有一个公共类(`public class`),且文件名必须与该公共类的名称相同。
- **注释**: Java 支持三种类型的注释:
- 单行注释:`//` 后面跟着注释文本。
- 多行注释:使用 `/*` 开始,`*/` 结束。
- 文档注释:使用 `/**` 开始,`*/` 结束,主要用于生成文档。
#### 基本数据类型
- **数值类型**:
- `byte`: 1 字节 (8 位),范围 -128 到 127。
- `short`: 2 字节 (16 位),范围 -2^15 到 (2^15-1)。
- `int`: 4 字节 (32 位),范围 -2^31 到 (2^31-1)。
- `long`: 8 字节 (64 位),范围 -2^63 到 (2^63-1)。
- `float`: 4 字节 (32 位) 浮点数。
- `double`: 8 字节 (64 位) 浮点数。
- **字符类型**:
- `char`: 2 字节 (16 位),表示 Unicode 字符。
- **布尔类型**:
- `boolean`: 1 字节,取值为 `true` 或 `false`。
#### 类型转换
- **自动类型提升**:
- Java 会自动将较小的数据类型提升到较大的数据类型,例如从 `byte` 到 `int`。
- **强制类型转换**:
- 当需要从较大的类型转换到较小的类型时,需要使用强制类型转换,例如 `(int) 4.562` 将 `double` 类型转换为 `int` 类型。
#### 对象创建与使用
- **对象实例化**:
- 使用 `new` 关键字创建一个新的对象实例。例如 `MyClass obj = new MyClass();`。
- **成员变量初始化**:
- 成员变量如果没有显式初始化,则会有一个默认值。
- 如果是基本类型,默认值为 0 或 false。
- 如果是引用类型,默认值为 null。
#### 总结
Java 是一种广泛使用的面向对象的编程语言,具有平台无关性、安全性高和自动内存管理等特点。掌握 Java 的基础语法和环境配置是学习 Java 的第一步,而理解类的设计、封装、继承和多态等概念则是深入学习 Java 的关键。通过实践编写简单的程序来熟悉 Java 的各种特性和工具链,将有助于更好地理解和应用这门语言。