Java中只有//、/.../、/.../三种合法注释;单行注释//从符号至行末忽略,不跨行且不识别字符串内//;多行注释/.../不支持嵌套;Javadoc注释/.../需严格格式,影响文档生成但不进入class文件。

Java 中只有三种合法的注释形式,其余所谓“注释”要么是语法错误,要么是被编译器忽略的无效写法。
单行注释用 //,从符号开始到行末全部忽略
这是最常用也最安全的注释方式,适合临时禁用代码、添加简短说明或调试标记:
-
//后面必须紧跟一个空格(非强制但属通用规范),例如// 初始化连接池而不是//初始化连接池 - 不能跨行,遇到换行即终止;若在字符串内出现
//,不会被识别为注释(因为已处于字面量中) - 常见误用:把
//写成///或////——多出来的斜杠只是普通字符,无特殊含义
多行注释用 /* ... */,支持嵌套吗?不支持
该形式可用于跨行说明或临时屏蔽大段代码,但有明确限制:
- 不支持嵌套:写
/* outer /* inner */ outer end */会导致编译失败,JDK 会报错unclosed comment - 可出现在代码任意位置(包括语句中间),例如
int x = 10 /* + 20 */;是合法的,但可读性极差,不建议 - 注意与文档注释混淆:虽然都用
/*开头,但只有以/**开始的才是 Javadoc 注释
Javadoc 注释用 /** ... */,只对 public 成员有效?不一定
该注释会被 javadoc 工具提取生成 API 文档,但其生效范围比很多人想的更灵活:
立即学习“Java免费学习笔记(深入)”;
- 默认情况下,
javadoc只处理public和protected类型的类、方法、字段;但可通过-package或-private参数扩展可见性 - 必须严格以
/**开头、*/结尾,且中间每行首的*是约定俗成的排版习惯(非语法要求),但 IDE 通常依赖它做格式化 - 常见坑:
/* *(星号前有空格)或/***(三个星号)都不是合法 Javadoc,工具会直接跳过 - 支持标准标签如
@param、@return、@throws,但自定义标签需额外配置才能被识别
真正容易被忽略的是注释与编译过程的关系:所有注释在编译期被完全剥离,不会进入 .class 文件,也不会影响运行时性能。但 Javadoc 注释如果写得不规范,会导致生成文档缺失关键信息,而这种问题往往上线后才暴露——那时连源码都未必还在手边。










