当前位置: 首页 > news >正文

Java注释详解:单行、多行与文档注释的区别与应用

目录

背景:

一、Java注释的三种类型

1. 单行注释

2. 多行注释

3. 文档注释

二、三种注释的深度对比

三、注释的最佳实践

四、高级应用技巧

1. 文档注释中的HTML标签

2. 常用Javadoc标签

3. 生成API文档

五、注释的陷阱与注意事项

六、实际案例解析

1. Spring框架中的注释示例

2. JDK源码中的注释示例

结语


背景:

作为Java开发者,注释是我们日常编码中不可或缺的部分。本文将深入探讨Java中的三种注释方式:单行注释、多行注释和文档注释,分析它们的区别、适用场景以及最佳实践。

一、Java注释的三种类型

1. 单行注释

单行注释以//开头,只对当前行有效:

// 这是一个单行注释
int age = 25; // 这里也可以添加单行注释

特点​:

  • 简洁明了,适合简短说明
  • 只影响注释符号到行尾的内容
  • 编译时会被完全忽略

2. 多行注释

多行注释以/*开头,以*/结尾:

/** 这是一个多行注释* 可以跨越多行* 常用于方法内部的复杂逻辑说明*/

特点​:

  • 可以跨越多行
  • 适合较长的说明或临时注释代码块
  • 编译时会被完全忽略
  • 不能嵌套使用

3. 文档注释

文档注释以/**开头,以*/结尾:

/*** 计算两个数的和* @param a 第一个加数* @param b 第二个加数* @return 两个数的和*/
public int add(int a, int b) {return a + b;
}

特点​:

  • 专门用于生成API文档
  • 支持HTML标签和Javadoc标签(如@param, @return等)
  • 可以通过javadoc工具生成HTML文档
  • 是Java官方推荐的API文档方式

二、三种注释的深度对比

特性单行注释多行注释文档注释
语法///* ... *//​**​ ... */
跨行能力
文档生成不支持不支持支持
特殊标签@param, @return等
编译处理忽略忽略可提取为文档
典型用途简短说明代码块说明/临时注释API文档

三、注释的最佳实践

  1. 单行注释​:

    • 用于方法内部的简短说明
    • 解释复杂或非直观的代码逻辑
    • 临时禁用单行代码
  2. 多行注释​:

    • 方法内部的较长说明
    • 临时注释掉代码块(但版本控制工具更适合此用途)
    • 不适合长期存在的注释,应考虑重构代码使其更清晰
  3. 文档注释​:

    • 所有public类和public/protected方法都应该有文档注释
    • 包含方法功能、参数说明、返回值、异常等信息
    • 使用标准Javadoc标签
    • 保持与代码同步更新

四、高级应用技巧

1. 文档注释中的HTML标签

/*** <p>这是一个段落</p>* <ul>*   <li>列表项1</li>*   <li>列表项2</li>* </ul>*/

2. 常用Javadoc标签

  • @param:方法参数说明
  • @return:返回值说明
  • @throws/@exception:抛出异常说明
  • @see:引用其他类或方法
  • @deprecated:标记为已弃用
  • @since:指明引入版本

3. 生成API文档

使用javadoc工具生成HTML文档:

javadoc -d doc -author -version MyClass.java

五、注释的陷阱与注意事项

  1. 注释不能替代清晰的代码​:好的代码应该自解释,注释只应解释"为什么"而不是"做什么"

  2. 避免过度注释​:如i++; // i增加1这样的注释毫无意义

  3. 及时更新注释​:过时的注释比没有注释更糟糕

  4. 多行注释不能嵌套​:/* /* 嵌套 */ */会导致编译错误

  5. 特殊字符处理​:文档注释中的HTML特殊字符需要转义

六、实际案例解析

1. Spring框架中的注释示例

/*** Interface defining methods for accessing a message source.* Provides support for parameterization and internationalization.* * @author Juergen Hoeller* @since 1.6* @see org.springframework.context.MessageSourceResolvable*/
public interface MessageSource {// ...
}

2. JDK源码中的注释示例

// HashMap.java中的单行注释示例
if (oldThr > 0) // initial capacity was placed in thresholdnewCap = oldThr;

结语

合理使用三种注释是Java开发者的基本功。记住:单行注释用于简短说明,多行注释用于代码块说明或临时注释,文档注释用于API说明。良好的注释习惯不仅能提高代码可维护性,还能通过Javadoc生成专业的API文档,是团队协作的重要保障。

希望本文能帮助你更好地理解和使用Java注释。如果你有任何问题或建议,欢迎在评论区留言讨论。

http://www.xdnf.cn/news/776089.html

相关文章:

  • c++泛型编程入门与STL介绍
  • ps色阶调整
  • 样本量计算:两独立样本定量资料——平均值差的置信区间法
  • Dify 部署问题处理
  • 本地部署 DeepSeek R1(最新)【从下载、安装、使用和调用一条龙服务】
  • MySQL触发器与视图
  • 什么是阻抗匹配
  • Python训练营---Day43
  • 一键解决Github无法访问或时断时续的问题-Linux环境
  • 页岩油开采的阶段
  • 无畏契约 directx runtime修复
  • 【CATIA的二次开发18】根对象Application涉及用户交互相关方法
  • MyBatis04:SpringBoot整合MyBatis——多表关联|延迟加载|MyBatisX插件|SQL注解
  • 《棒球万事通》棒球特长生升学方向·棒球1号位
  • 【CF】Day73——Codeforces Round 887 (Div. 2) B (思维 + 模拟)
  • 【基于阿里云搭建数据仓库(离线)】DataWorks中删除节点
  • 【C语言预处理详解(上)】--预定义符号,#define定义常量,#define定义宏,带有副作用的宏参数,宏替换的规则,宏和函数的对比
  • 【MIMO稳定裕度】基于数据驱动的多输入多输出系统稳定裕度分析
  • 【HW系列】—安全设备介绍(开源蜜罐的安装以及使用指南)
  • Ubuntu20.04 LTS 升级Ubuntu22.04LTS 依赖错误 系统崩溃重装 Ubuntu22.04 LTS
  • Qt共享内存(QSharedMemory)使用指南
  • openai-java
  • 白银价格查询接口如何用Java进行调用?
  • 【nm】nm命令的使用:查看.so中的符号信息
  • ps自然饱和度调整
  • 江科大RTC实时时钟hal库实现
  • 模块二:C++核心能力进阶(5篇)第三篇:《异常安全:RAII与异常传播的最佳实践》
  • 性能测试的概念和场景设计
  • 【LLM】AI Agents vs. Agentic AI(概念应用挑战)
  • 污痕圣杯:阿瓦隆的陨落 整合包 离线版