在Java中正确使用注释

Java提供了3种类型的注释:

单行注释(C++风格)

在Java中最简单的注释是单行注释。它以两个正斜杠开始并到行尾结束。例如:

// this is a single-line commentx = 1; // a single-line comment after code

多行注释(C风格)

Java同样提供跨越多行的注释类型。这种类型的注释以紧跟着一个星号的正斜杠开始,并以紧跟着一个正斜杠的星号结束。这种类型注释的开始和结束分界符可以在同一行里也可以在不同的行上。例如:

/* This is a c-style comment *//*  This is also ac-style comment, spanningmultiple lines */

注意:C风格的注释不可以嵌套使用。比如下面的用法:

/* A comment looks like/* This is a comment */blah blah blah*/

上面的用法会造成语法错误,因为Java编译器只把第一个 */ 当做注释来处理。(编译器认为注释在第一个“*/”就结束了)。

你可以在多行注释里嵌入单行注释:

/* This is a single-line comment:// a single-line comment*/

以及在单行注释里使用多行注释:

// /* this is//    a multi-line//    comment */

文档注释

文档注释是一种与多行注释很类似的特殊注释,它可以用来为你的源代码产生外部文档。这种注释以紧跟着两个星号的正斜杠开始,并以紧跟着一个正斜杠的星号结束。例如:

/** This is a documentation comment *//** This is also adocumentation comment */

这里有一些关于文档注释的重要事情要注意:

  • javadoc文档生成器会把文档注释里的所有文本都添加到一个HTML段落里。这意味着,在文档注释里的任意文本都会被格式化为一个段落;空格和换行符会被忽略。如果你想要特殊的格式,你必须要在文档注释里使用HTML标签。
  • 如果文档注释以超过两个的星号开始,那么javadoc就认为这些星号是用来在源码里创建一个“框”框住注释的,并忽略多余的星号。例如:
/**********************************This is the start of a method**********************************/

该注释仅保留“This is the start of a method”文本。

  • javadoc会忽略文档注释里处于行首的星号。例如:
/**************************************** This is a doc comment* on multiple lines that I want to stand* out in source code, looking "neat"***************************************/

该注释仅保留“This is a doc comment on multiple lines that I want to stand out in source code, looking “neat””文本。

  • 常见的用法如下:
/******************************************...******************************************/

该用法是为了突出注释。要注意的是,这属于文档注释(即使这不是你所想的那样),并会在产生的文档里出现注释的内容。

什么时候使用文档注释

你(至少)应该在任意的公有类、接口、方法和源码里的类或实例变量前面使用文档注释。这样可以让javadoc针对代码产生简单的文档,它列出了公 共实体 和每个实体的简要说明。你同样可以在非公共方法前面使用文档注释,不过需要使用一个javadoc选项来它们产生文档。相比于公有实体,在非公有实体上使 用文档注释显得没那么重要(它的接口不会暴露出来……)。但如果你要注释代码,你同样可以使用文档注释。

什么时候使用单行注释

任意时候都可以!

关于注释,我有一个简单的建议,在你想写常规注释(不是用来描述类、接口、方法或者变量的文档注释)的时候可以使用单行注释。

为什么?因为你可以轻易地使用多行注释去“注释掉”你的代码段(“注释掉代码”意味着把一段代码的词法状态变为一段注释,让编译器忽略这段代码)。举个例子:

x = 1;   /* set x to 1 */y = 2;   /* set y to 2 */f(x, y); /* call f with x and y */

要把上面三行代码注释掉,你可能需要在每一行的前面使用单行注释:

// x = 1;   /* set x to 1 */// y = 2;   /* set y to 2 */// f(x, y); /* call f with x and y */

或者在还没有加注释的地方加上多行注释:

/* x = 1;  */ /* set x to 1 *//* y = 2;  */ /* set y to 2 *//* f(x, y);*/ /* call f with x and y */

或者分解或删除已存在的注释的“结束注释”分解符:

/*x = 1;   /* set x to 1 * /y = 2;   /* set y to 2 * /f(x, y); /* call f with x and y * /*/

这些用法都糟糕透了。如果原始代码使用下面的注释,那么事情就好办多了:

x = 1;   // set x to 1y = 2;   // set y to 2f(x, y); // call f with x and y

如此一来,只需使用多行注释把代码围起来你就可以轻松把它注释掉:

/*x = 1;   // set x to 1y = 2;   // set y to 2f(x, y); // call f with x and y*/

在你需要使用注释的时候尽量使用单行注释,不要写无用的注释。

你也可以看看之前发布的9个最有趣的代码注释,尽管它是搞笑的。

什么时候使用多行注释

阅读了上面的内容后,这个问题变得很明显了。只使用多行注释来注释代码段,不要用以其他目的。

转载于:https://www.cnblogs.com/mlj007/p/4329650.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark 机器学习中的线性代数库

文章目录1. DenseVector、SparseVector2. DenseMatrix3. SparseMatrix4. Vector 运算5. 矩阵运算6. RowMatrix7. IndexedRowMatrix8. CoordinateMatrix9. BlockMatrix完整代码pom.xml学自:Spark机器学习实战 https://book.douban.com/subject/35280412/ 环境&#…

atitit. orm框架的hibernate 使用SQLQuery createSQLQuery addEntity

atitit. orm框架的hibernate 使用SQLQuery createSQLQuery addEntity 1. addEntity 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。最简单的情况下,我们可以采用以下形式: List cats ses…

【机器学习】回归算法-线性回归分析、回归实例和回归性能评估

回归算法-线性回归分析、回归实例和回归性能评估线性回归损失函数(误差大小)sklearn线性回归正规方程、梯度下降API线性回归实例回归:目标值连续;分类:目标值离散。 预测回归和分类是不一样的。回归问题可以用于预测销售额,比如公…

scrapy使用代理报错keyerror: proxy_爬虫Scrapy框架-Crawlspider链接提取器与规则解析器...

Crawlspider一:Crawlspider简介CrawlSpider其实是Spider的一个子类,除了继承到Spider的特性和功能外,还派生除了其自己独有的更加强大的特性和功能。其中最显著的功能就是”LinkExtractors链接提取器“。Spider是所有爬虫的基类,其…

activity-启动动画的设定(下面弹出出现,弹入下面消失)

1.今天为了把一个activity以dialog的形式显示,而且实现从开始的时候从底部往上弹出,结束的时候,从上往下消失,做了如下的工作。 1)如果把一个activity以dialog的形式显示? 这个只需要设置theme的样式为*.di…

传智书城首页设计代码_(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载...

模板名称:(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,创意设计、装饰设计、餐饮酒店设计…

【机器学习】逻辑回归—良/恶性乳腺癌肿瘤预测

逻辑回归—良/恶性乳腺癌肿瘤预测 逻辑回归的损失函数、优化 与线性回归原理相同,但由于是分类问题,损失函数不一样,只能通过梯度下降求解 sklearn逻辑回归API sklearn.linear_model.LogisticRegressionLogisticRegression sklearn.linear…

mysql分组之后统计数量

select count(*) from(SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id ) a ; 转载于:https://www.cnblogs.com/shenming/p/4343895.html

opencv mat初始化_【OpenCV入门之十二】看起来一样的图像竟然存在这么大的差别!...

小白导读学习计算机视觉最重要的能力应该就是编程了,为了帮助小伙伴尽快入门计算机视觉,小白准备了【OpenCV入门】系列。新的一年文章的内容进行了很大的完善,主要是借鉴了更多大神的文章,希望让小伙伴更加容易理解。如果小伙伴觉…

LeetCode 1854. 人口最多的年份(差分)

文章目录1. 题目2. 解题1. 题目 给你一个二维整数数组 logs ,其中每个 logs[i] [birthi, deathi] 表示第 i 个人的出生和死亡年份。 年份 x 的 人口 定义为这一年期间活着的人的数目。 第 i 个人被计入年份 x 的人口需要满足:x 在闭区间 [birthi, dea…

hdu 4280 最大流sap

模板套起来 1   5 7  //5个结点&#xff0c;7个边 3 3  //坐标 3 0   3 1 0 0 4 5 1 3 3  //相连的结点和流 2 3 4 2 4 3 1 5 6 4 5 3 1 4 4 3 4 29 1 #include<cstdio>2 #include<algorithm>3 #include<cstring>4 using namespace std;5 const in…

Opencv visual studio c++ 环境搭建

转载&#xff1a; https://blog.csdn.net/smilife_/article/details/89244189 https://blog.csdn.net/cwj066/article/details/82252764 c 环境搭建 下载链接opencv-3.4.5-vc14_vc15.exe 第一步&#xff1a;去opencv官网(https://opencv.org/)下载opencv源码https://opencv.…

服务端_说说Netty服务端启动流程

点击上方☝SpringForAll社区 轻松关注&#xff01;及时获取有趣有料的技术文章本文来源&#xff1a;http://yeming.me/2016/03/12/netty1/netty服务端代码分析服务端启动配置对于 ServerBootstrap&#xff1a;ServerBootstrap继承于 AbstractBootstrap&#xff0c;它从父类继承…

python能做哪些客户端_发布一个Httpsqs的Python客户端

这款软件有几种客户端, Java/Perl/C,却没有Python的客户端.故,本人奉上一个实现,欢迎指正!!代码:#Verion 1.0#Author wendal(wendal1985gmail.com)#If you find a bug, pls mail meimport sys,httplibERROR HTTPSQS_ERRORGET_END HTTPSQS_GET_ENDPUT_OK HTTPSQS_PUT_OKPUT_E…

ztree在刷新时第一个父节点消失_第一个关于中式菜谱的智能问答机器人小程序正式上线啦...

为了满足大家对菜品烹饪的各类问题能直接得到答案的需求&#xff0c;我开发了目前第一个真正关于菜谱的智能问答系统&#xff0c;并在微信小程序发布上线。这套系统支持对于8600多种菜品的问答功能&#xff0c;并能实现快速问答响应&#xff0c;整套系统后端依托于搭建的中式菜…

LeetCode 1855. 下标对中的最大距离(双指针)

文章目录1. 题目2. 解题1. 题目 给你两个 非递增 的整数数组 nums1​​​​​​ 和 nums2​​​​​​ &#xff0c;数组下标均 从 0 开始 计数。 下标对 (i, j) 中 0 < i < nums1.length 且 0 < j < nums2.length 。如果该下标对同时满足 i < j 且 nums1[i] …

【Python基础知识-pycharm版】第一节-基础

python第一节特点Python 解释器python开发环境交互模式IDLE开发环境使用入门程序基本格式图形化程序设计python程序的构成python程序的对象python的引用python的标识符标识符命名规则变量和简单赋值语句删除变量和垃圾回收机制Python 是一种解释型、面向对象的语言。 官网&…

解决Eclipse 项目报错:Unbound classpath container

Eclipse出现下面两条报错&#xff1a;The project cannot be built until build path errors are resolved HelloWord Unknown Java ProblemUnbound classpath container: JRE System Library [JavaSE-1.7] in project java project name java project name Build path Build P…

c++对象回收string类型成员时coredump_本体技术视点 | 虚拟机中引用性动态语言对象模型思考...

1引言Ontology 的 NeoVM 虚拟机新增加了 DCALL、HAS_KEY、KEYS 以及 VALUES 等几条新的指令。因此&#xff0c;基于 NeoVM 的引用性动态语言对象的设计理论上可行&#xff0c;这可使得当前语言的支持能更接近原生语义。对象模型设计的必要性Ontology NeoVM 对用户暴露的对象语义…