---
url: /doc/Java/dylhdbsy/index.md
---
## Java 的开发工具

* javac：Java 编译器。将 Java 程序编译成字节码
* java：Java 解释器。执行已经转换为字节码的文件
* jdb：Java 调试器。调试 Java 程序
* javap：反编译。将类文件还原回方法和变量
* javadoc：文档生成器。创建 HTML 文件

## Java 运行基础

> JVM：Java 虚拟机

* JVM 是–跨平台性的基础。被包含在 JDK 中。
* 不同平台有各自对应的不同 JVM
* JVM 屏蔽了底层平台的区别。能做到 ”一次编译，到处运行”

> JDK 全称：Java Development Kit（Java 开发工具包）

* JDK = JRE + Java 的开发工具（Java，Javac，Javadoc 等等）
* 给开发人员使用的，包含 JRE

> JRE：Java Runtime Enviroment（Java 运行环境）

* JRE = JVM + Java SE 标准类库（Java 的核心类库）
* 运行一个 Java 程序的基本条件

## Java 执行流程分析

> `.Java` 文件（源文件） — javac（编译）— `.class` 文件（字节码文件） — java（运行）— 结果

### 编译

```
javac [选项] 源文件名.java			//[] 中是可选项
```

* 通过编译器将 Java 源文件编译成 JVM 可识别的字节码文件。字节码文件是二进制格式的，其格式是统一的。在源文件目录下使用 Javac 编译工具对 Java 文件进行编译。
* 如果没有错误将没有提示，当前目录会对应其中每一个类生成对应名称的 `.class` 文件，即字节码文件，也是可执行的 Java 程序。

### 运行

```cmd
java [选项] 程序名 [参数列表]			//[] 中是可选项
```

* 有了可执行的 Java 程序（字节码文件）
* 通过运行工具` Java.exe` 对字节码文件进行执行，本质是将 `.class` 文件装载到 JVM 运行。

**注意，修改后的 .Java 源文件需要重新编译**

## Java 开发注意事项和细节说明

1. 源文件以 `.java` 为扩展名，源文件的基本组成部分是类（class）

2. Java 应用程序的执行入口是 `main()` 方法。其有固定的**书写格式：**

   `public static void main(string[]args){…}`

3. Java 语言**严格区分大小写**。

4. Java 方法由一条条语句构成，**每个语句都以 `;` 结束**。

5. **大括号 `{` `}` 是成对出现的**，缺一不可。习惯先写 `{}` 再写代码

6. 一个源文件中**最多只有一个 public 类**，其余类不限。

7. **如果文件中包含 public 类，则文件名必须按该类命名。**

8. 也可以把 main 方法写在非 public 类中，然后运行指定非 public 类，这样入口方法是非 public 类的主方法。

9. ***在控制台按 tab 可以实现代码补齐。按方向键 ↑ 或 ↓ 可以调用历史代码。***

## Java 转义字符

1. `\t`：一个制表位，实现对齐功能

2. `\n`：换行符

3. `\\`：一个 `\`

4. `\"`：一个 `"`

5. `\'`：一个 `'`

6. `\r`：一个回车（不是换行）

7. `\.`：一个小圆点 `.`

8. `\b`：退格键

9. `\u????`：一个具体的 Unicode 字符。其中 ??? 是 4 位 16 进制数

   `\???`：一个具体的 Unicode 字符。其中 ??? 是 3 位 8 进制数

## 注释

> 注释：用于注解说明程序的文字。其提高了代码的可读性，是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来，再用代码去体现。
>
> 被注释的文字不会被 JVM 解释执行。

### 注释类型

* **单行注释：**

  ```
  //这是一条单行注释
  JAVA
  ```

  选中文字按 `ctrl` + `/` 将选中文字变为单行注释

* **多行注释：**

  ```
  /*	这
  	是一段
  	多行注释
  	*/JAVA
  ```

  多行注释中不允许多行注释嵌套。

* **文档注释：**

  ```
  /**
  *@auther Melody
  *@version 3.2.0
  */JAVA
  ```

  以下写法也同样合法：

  ```
  /**
  	就是说咱可以每行开头不加星号的
  */
  ```

### 文档注释

> 文档注释的注释内容可被 JDK 中的 Javadoc 工具解析，生成一套以 HTML 形式体现的说明文档。
>
> 抽取注释：`javadoc -d 生成目录 -author -.. 文档名.java`

文档注释包含 **标记** 和紧随其后的 **自由格式文本**：

* **标记：**

  以 `@` 开始，如 `@since`

  下面列出了一些 **通用注释**：

  * `@since 始于`：创建一个 **始于** 条目。其后文本可以是引入该特性的版本的任何描述

  * `@author 作者`：产生一个 **作者** 条目。可以使用多个 `@author` 标记

  * `@version 版本`：产生一个 **版本** 条目。这里的文本可以是对当前版本的任意描述

  * `@link 超链接`：产生一个 **超链接**，链接到 javadoc 相关部分或外部文档

    `@see 引用`：在 **see also** 部分增加一个超链接。可以添加多个 `@see` 标记，但必须放在一起。

    这里的 引用 有以下选择：

    ```java
    /**
    *@see com.test.Example#act()
    *@see <a herf="../../../../../../">Melody's Box</a>
    *@see "一段文本"
    */
    ```

    > 1. 只提供类、方法或变量的名字。那个场合，使用 **#** 来分隔类名和方法名
    > 2. `@see` 后有一个 **<** 字符的场合，需要指定超链接。可以指向任何 URL
    > 3. `@see` 后有一个 **“** 字符的场合，文本会显示在 see alse 部分

* **自由格式文本：**

  第一句应该是一个概要性的句子。javadoc 会自动抽取这些语句生成概要页

  自由格式文本中，可以使用 HTML 修饰符

#### 注释的插入

javadoc 工具抽取文档注释时，会从以下位置抽取：

* 模块

* 包（包注释）

  **要想产生包注释，必须在每个包目录中添加一个单独的文件**

  有 2 种方法：

  * 提供一个名为 package-info.java 的文件。其中 **只能** 包含文档注释，以及后面的一个 package 语句。不能包含更多的代码或注释。
  * 提供一个名为 package.html 的 HTML 文件。此时会抽取 `<body>...</body>` 间的所有文本

* 公共类和接口（类注释）

  类注释必须放在 import 语句后，类定义之前

* 公共的和受保护的字段

  只需要对公共字段（通常是静态常量）建立文档

* 公共的和受保护的构造器和方法

  方法注释必须放在所描述的方法之前。除了通用标记外，还能使用如下标记：

  * `@param 变量描述`：该标记能给当前方法的 **参数** 部分添加一个条目。该描述可以占据多行。

    一个方法的所有 `@param` 标记必须放在一起

  * `@return 返回值描述`：该标记能给当前方法的 **返回值** 部分添加一个条目。该描述可以占据多行。

  * `@throws 异常描述`：该标记能给当前方法的可能抛出的 **异常** 添加一个条目。
