本文最后更新于4 天前,其中的信息可能已经过时,如有错误请发送邮件到1464396208@qq.com
## 整体流程图
```mermaid
flowchart TD
A[引入:什么是注释] --> B[注释的作用与意义]
B --> C[注释的三大类型]
C --> C1[单行注释 //]
C --> C2[多行注释 /* */]
C --> C3[文档注释 /** */]
C1 --> D[实战演示:给 HelloWorld 加注释]
C2 --> D
C3 --> D
D --> E[常见问题与注意事项]
E --> E1[注释不参与编译与运行]
E --> E2[多行/文档注释不能嵌套]
E --> E3[标点必须使用英文状态]
E --> E4[中文注释乱码与编码问题]
E4 --> F[解决方案:-encoding 指定编码]
F --> G[总结:快捷键与最佳实践]
```
各章节详细知识点
📌 一、注释的概念与作用
主题内容
注释是写在代码中、对代码进行解释说明的文字,它是给人看的,而不是给计算机执行的。
核心概念
- 注释(Comment):在程序中对代码进行解释、说明、标注的文本,用于提高代码的可读性和可维护性。
- 注释本质上是一段”被忽略”的文本——编译器在编译阶段会将其直接跳过。
核心特性/工作原理
- 注释不参与编译:
.java源码经javac编译后生成的.class字节码中不包含注释内容。 - 注释不参与运行:JVM 执行
.class文件时,注释内容完全不存在,因此不会影响程序运行结果。 - 从”预编译”角度理解:注释在编译预处理阶段相当于被”删除”了。
对比/示例/注意事项

为什么需要注释?
- 方便自己后期读懂代码——”一周前自己写的代码,我已经看不懂了”。
- 方便他人协作——团队开发时让别人快速理解代码意图。
- 便于调试定位——暂时注释掉某段代码来排查问题(考试写注释甚至能拿分)。
⚠️ 注意事项:注释是”解释代码”而非”让代码失效”的手段。它要说明为什么这样做,而不是简单重复代码做了什么。
📌 二、单行注释(Single-line Comment)
主题内容
单行注释是最常用的注释方式,用于对某一行代码或某段逻辑进行简短说明。
核心概念
- 语法:
// 注释内容 - 作用范围:从
//开始,直到本行行尾结束,仅对当前行生效。
核心特性/工作原理
- 只有
//之后的同一行内容会被忽略;换行后自动结束注释。 - 可单独占一行,也可写在代码语句的右侧(行尾注释)。
对比/示例/注意事项
// 这是一个单行注释,独占一行
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld"); // 这是行尾注释
}
}
⚠️ 注意事项:
- 注释中的标点符号必须使用英文状态(半角),中文标点可能导致语法报错。
- 单行注释不存在嵌套问题,因为注释到行尾即结束。
📌 三、多行注释(Multi-line Comment / Block Comment)
主题内容
多行注释用于对跨越多行的代码块或较长的说明文字进行注释,适合写详细的段落说明。
核心概念
- 语法:
/* 注释内容 */ - 作用范围:从
/*开始,到最近的*/结束,中间可跨任意多行。
核心特性/工作原理
- 编译器遇到
/*后,会一直忽略内容,直到遇到第一个*/才结束。 - 采用就近配对原则:
/*与离它最近的*/配对。
对比/示例/注意事项
/*
* 这是一个多行注释
* 可以跨越很多行
* 通常用于详细说明某段逻辑
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
⚠️ 注意事项(本视频重点强调): 多行注释不能嵌套。例如:
/* 外层注释开始
/* 试图内层嵌套 */
这里已经不在注释里了 */第一个
/*会与第一个*/配对,导致后面的*/成为”孤立”的普通代码,从而引发编译错误。
📌 四、文档注释(Documentation Comment / Javadoc)
主题内容
文档注释是一种特殊的多行注释,专门用于生成 API 文档,是 Java 官方推荐的规范注释方式。
核心概念
- 语法:
/** 注释内容 */ - 作用:配合
javadoc工具,从源码中自动提取并生成HTML 格式的 API 文档。
核心特性/工作原理
- 以
/**开头(比多行注释多一个*),以*/结尾。 - 通常配合文档标签使用,如
@author(作者)、@param(参数说明)、@return(返回值说明)等。 - 与多行注释一样,不能嵌套。
对比/示例/注意事项
/**
* HelloWorld 示例类
* @author 黑马程序员
* @version 1.0
*/
public class HelloWorld {
/**
* 程序入口方法
* @param args 命令行参数
*/
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
📌 五、注释注意事项与常见报错(含编码问题)
主题内容
本部分汇总了实战踩坑点**,是初学者最容易出错的地方。
核心概念
- 注释不参与编译和运行——注释掉
System.out.println()后,控制台不会输出内容。 - 标点符号必须为英文状态——中文逗号、中文分号会导致报错(”把那个逗号删了就可以了”)。
- 中文注释乱码——本质是文件编码与编译器读取编码不一致。
核心特性/工作原理(编码问题的原理)
- Windows 记事本默认保存为 ANSI(即 GBK) 编码;而很多编辑器(如 Notepad++、VS Code、IDEA)默认使用 UTF-8。
javac默认按操作系统平台默认编码读取.java文件(中文 Windows 为 GBK)。- 当文件为 UTF-8、而
javac按 GBK 读取时,中文字符会被错误解析,出现乱码或”不可映射字符”报错。
对比/示例/注意事项
三种主流解决方案(弹幕中反复出现):
| 方案 | 操作 | 适用场景 |
|---|---|---|
| 修改文件编码 | 记事本”另存为”选择 ANSI 或 UTF-8 | 用记事本直接编写时 |
| 编译时指定编码 | javac -encoding UTF-8 HelloWorld.java | 文件为 UTF-8 但平台默认 GBK |
| 编译时指定 GBK | javac -encoding GBK HelloWorld.java | 文件为 ANSI/GBK 编码 |
关键命令示例:
# 文件保存为 UTF-8 编码时,强制按 UTF-8 编译
javac -encoding UTF-8 HelloWorld.java
# 文件保存为 GBK/ANSI 编码时,按 GBK 编译
javac -encoding GBK HelloWorld.java
# 编译成功后运行
java HelloWorld
快捷键备忘:
| 工具 | 单行注释 | 多行/块注释 |
|---|---|---|
| IntelliJ IDEA | Ctrl + / | Ctrl + Shift + / |
| VS Code | Ctrl + / | Shift + Alt + A |
⚠️ 注意事项:
- 修改编码后务必保存文件再编译(”调完编码以后记得保存再运行”)。
- 若控制台运行
javac提示”不是内部或外部命令”,是 JDK 环境变量(PATH)未配置好的问题,需回到前面章节检查JAVA_HOME与Path配置。
总结
核心要点速记
| 概念 | 一句话总结 |
|---|---|
| 注释本质 | 给人看的解释性文字,编译器直接忽略 |
| 单行注释 | // 到行尾结束,最常用 |
| 多行注释 | /* */ 可跨多行,但不能嵌套 |
| 文档注释 | /** */ 可被 javadoc 提取生成 API 文档 |
| 就近配对 | /* 与最近的一个 */ 配对,嵌套会报错 |
| 编译规则 | 注释不参与编译、不参与运行、不进 .class |
| 标点规范 | 注释中的标点必须是英文半角状态 |
| 中文乱码 | 文件编码与 javac 读取编码不一致导致,用 -encoding 解决 |
| 快捷键 | IDEA 中 Ctrl+/ 单行、Ctrl+Shift+/ 多行注释 |


