跳到内容

评论

100% developed
来自维基教科书,开放世界的开放书籍

导航 语言基础 主题: v  d  e )


注释允许插入不会被编译或解释的文本。它可以出现在源代码中任何允许空格的地方。

它用于解释源代码的作用,通过

  • 解释采用的技术选择:为什么使用这种算法而不是另一种算法,为什么调用这种方法……
  • 解释下一步应该做什么(待办事项列表):改进、需要修复的问题……
  • 提供理解代码所需的解释,以便您自己或其他开发人员能够在以后更新它。

它还可以用于使编译器忽略代码的一部分:用于调试的临时代码,正在开发的代码……

Java 中的注释语法与 C++ 中相同。

行尾注释以两个斜杠开头,以行尾结束。此语法也可以用于单行。

Example 代码部分 3.105:斜杠-斜杠注释。
// A comment to give an example

int n = 10; // 10 articles

多行注释用 '/' + '*' 和 '*' + '/' 括起来。

Example 代码部分 3.106:多行中的斜杠-星号注释。
/*
 * This is a comment
 * on several lines.
 */

/* This also works; slash-star comments may be on a single line. */

/*
Disable debugging code:

int a = 10;
while (a-- > 0) System.out.println("DEBUG: tab["+a+"]=" + tab[a]);
*/

按照惯例,斜杠-星号注释的后续行以一个星号开头,该星号与打开注释序列中的星号对齐,但这不是必需的。不要将斜杠-星号注释嵌套在另一个斜杠-星号注释中。如果您不小心嵌套了这样的注释,您可能会在第一个星号-斜杠序列之后不久从编译器那里收到语法错误。

Warning 代码部分 3.107:嵌套的斜杠-星号注释。
/* This comment appears to contain /* a nested comment. */
 * The comment ends after the first star-slash and
 * everything after the star-slash sequence is parsed
 * as non-comment source.
 */

如果您需要在注释中包含序列 */,您可以使用 html 数字实体:*/

斜杠-星号注释也可以放在任何 Java 标记之间,但不推荐。

Example 代码部分 3.108:内联斜杠-星号注释。
int i = /* maximum integer */ Integer.MAX_VALUE;

但是,当注释出现在字符串文字中时,它们不会被解析为注释。

Example 代码部分 3.109:字符串文字。
String text = "/* This is not a comment. */";

它会产生一个 33 个字符的字符串。

测试您的知识

问题 3.26:考虑以下代码

Example 问题 3.26:带注释的代码。
int a = 0;
// a = a + 1;
a = a + 1;
/*
a = a + 1;
*/
a = a + 1;
// /*
a = a + 1;
// */
a = a /*+ 1*/;
a = a + 1; // a = a + 1;
System.out.println("a=" + a);

标准输出中打印了什么?

答案
Standard input or output 答案 3.26 的输出
a=4
Example 答案 3.26:带注释的代码。
int a = 0;
// a = a + 1;
a = a + 1;
/*
a = a + 1;
*/
a = a + 1;
// /*
a = a + 1;
// */
a = a /*+ 1*/;
a = a + 1; // a = a + 1;
System.out.println("a=" + a);

突出显示的行是代码行,但第 11 行什么也不做,只有第 12 行的第一部分是代码。

注释和 unicode

[编辑 | 编辑源代码]

请注意,Java 仍然会在注释中解释 Unicode 序列。例如,Unicode 序列 \u002a\u002f(其代码点对应于 */)在 Java 编译器的源文件词法扫描的早期就被处理了,甚至在处理注释之前就被处理了,因此它在 Java 中是一个有效的星号-斜杠注释

Example 代码部分 3.110:Unicode 序列中断。
/* This is a comment. \u002a\u002f
String statement = "This is not a comment.";

并且在词法上等效于

Example 代码部分 3.111:Unicode 序列中断效果。
/* This is a comment. */
String statement = "This is not a comment.";

'*' 字符是 Unicode 002A'/' 字符是 Unicode 002F。)

类似的注意事项适用于斜杠-斜杠注释中的换行符。

例如

Warning 代码部分 3.112:换行符。
// This is a single line comment \u000a This is code

这是因为 \u000a 是 Unicode 中的换行符,这会让编译器认为您添加了一个新行,而实际上您没有。

Javadoc 注释

[编辑 | 编辑源代码]

Javadoc 注释是斜杠-星号注释的一种特殊情况。

Example 代码部分 3.113:Javadoc 注释。
/**
 * Comments which start with slash-star-star are Javadoc comments.
 * These are used to extract documentation from the Java source.
 * More on javadoc will be covered later.
 */


华夏公益教科书