跳到內容

評論

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.
 */


華夏公益教科書