Java 中的可執行註釋
1. 概述
當我們需要在程式碼中添加附加註解時,註解會很有用。它們可以幫助我們使我們的程式碼更容易理解。此外,它們在執行複雜操作的方法中特別有用。
在本教程中,我們將探討程式碼中的註解可以可執行的情況。或至少看起來他們可以。
2. 評論
在我們深入研究之前,讓我們先回顧一下 Java 中的註解。它們是 Java 語法的一部分,有兩種基本格式:
- 單行註解
- 多行註解
從“//”字元到行尾的文字表示單行註解:
// This is a single-line comment.
此外,多行註解(也稱為多行註解)以「/*」開始,以「*/」符號結束。兩者之間的所有內容都被視為註釋:
/* This is a
* multiline
* comment.
*/
3. 註解和Unicode
現在,讓我們從一個例子開始。以下程式碼在標準輸出中列印“ Baeldung
”:
// \u000d System.out.println("Baeldung");
因為該行以“//”開頭,代表單行註解的開始,所以我們可以得出“ System.out.println(“Baeldung”);
的結論。 」聲明也是該評論的一部分。
然而,這並不準確。需要注意的是,Java 不允許註解執行。
考慮到這一點,讓我們詳細檢查我們的範例,看看程式碼在控制台中列印「 Baeldung
」的原因。
3.1. Unicode 轉義
由於我們在其前面放置了「 \u000d
」 Unicode 轉義序列,因此範例中的程式碼不會被視為註解。
所有 Java 程式都使用 ASCII 字元集。但是,由於非拉丁字符,我們無法使用 ASCII 代碼表示,Java 允許 Unicode 出現在註釋、標識符、關鍵字、文字和分隔符中。
此外,為了能夠在程式碼中使用所有非 ASCII 字符,我們需要透過 Unicode 轉義序列嵌入它們。它們以反斜線(“\”)開頭,後面跟著字母“u”,然後是特定字元的四位十六進位代碼。
使用此約定,CR(或回車符)變為“ \u000d
”。
此外,Unicode 轉義序列使用Java 語言規範中定義的詞法翻譯轉換為 ASCII 代碼。
接下來,讓我們仔細看看 Java 如何執行詞法轉換。
3.2.詞彙翻譯
執行詞法翻譯時,Unicode 編碼優先於任何其他編碼,即使它是註釋的一部分。換句話說,Java 首先會對所有 Unicode 轉義序列進行編碼,然後再進行其他翻譯。
簡單來說,在轉換過程中,Unicode轉義符被翻譯成Unicode字元。然後,將上一步驟的結果轉換為 ASCII 碼。
副作用是,如果我們在註解中放置無效的 Unicode 轉義,我們的程式碼將無法編譯。 Java 將以「 \u
」開頭的所有內容視為 Unicode 轉義。
由於這種轉換,我們可以使用 Unicode 轉義來包含僅使用 ASCII 字元的任何 Unicode 字元。這樣,基於 ASCII 的程式和工具仍然可以處理用 Unicode 寫的程式碼。
現在,回到我們的例子。我們使用了 Unicode 轉義序列“ \u000d
”,它代表一個新行。
當我們編譯程式碼時,詞法翻譯將首先發生。因此,「 \u000d
」將轉換為新行。由於根據定義,單行註解在行尾結束,因此我們在 Unicode 轉義之後放置的程式碼將不再是註解的一部分。
轉換後,我們的程式碼將出現在新行中:
//
System.out.println("Baeldung");
3.3. Unicode 和 IDE
如今,我們經常使用IDE作為開發工具。此外,我們經常依賴它,並期望它會在程式碼中的某些內容可疑時向我們發出警告。
但是,當涉及 IDE 和 Unicode 字元時,根據我們使用的 IDE,有時會以錯誤的方式顯示程式碼。它可能無法正確解釋 Unicode 轉義序列,因此顯示不正確的程式碼突出顯示。
由於我們可以使用 Unicode 轉義符來取代 ASCII 字符,因此沒有什麼可以阻止我們用 Unicode 轉義符替換代碼的其他部分:
\u002f\u002f This is a comment
\u0053ystem.out.println("Baeldung");
在這裡,我們用 Unicode 轉義符號取代了“//”和字母“S”。該程式碼仍然在控制台中列印“ Baeldung
”。
4。結論
在本教程中,我們學習了註解和 Unicode 轉義序列如何協同運作。
綜上所述,Java不允許可執行註解。當在我們的程式碼中使用 Unicode 轉義符時,Java 在進行任何其他轉換之前將它們轉換為 ASCII。
當我們想要使用無法在程式中以任何其他方式表示的非拉丁字元時,能夠編寫 Unicode 字元非常有用。儘管僅使用 Unicode 轉義符編寫整個程式碼庫是完全合法的,但我們應該避免它們並僅在必要時使用它們。