## 注釋(Comments)
在這一節,我們會講一下注釋(Comments),單行注釋(Single Line Comments)和多行注釋(Multi Line Comments)還有JavaDoc風格的注釋。
所以回到IntelliJ
注釋不是可執行的代碼,它們可以放在任意地方,注釋可以讓你的代碼更容易讀懂。但是如果有過多的注釋,代碼也會可讀性很差,且難以理解。在考試當中你不會看到很多的注釋, 基本上出考題的人會盡量讓代碼更加難以理解,更加難讀懂。
在這一節,你會看到很多問題,類型可能會出現在考試中的。在這個課程中,你經常會看到代碼有注釋,寫注釋總是一個好習慣。以便你在幾周或幾個月后再看自己的代碼時,更容易看懂當初寫的是什么。
### 單行注釋(Single Line Comments)
所以讓我們先看一下單行注釋
單行注釋由兩個正斜杠(Slash)開始 //, 然后是注釋的內容。例如
```java
package io.zwt;
public class Main {
public static void main(String[] args) {
// printing size of arguments
System.out.println("args-size= " + args.length);
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]=" + args[i]);
}
}
}
```
上面的就是單行注釋,你甚至可以有空的注釋
```java
//
//
```
你也可以注釋掉代碼,英文說法是 comment out
```java
package io.zwt;
public class Main {
public static void main(String[] args) {
// printing size of arguments
//
//
//System.out.println("args-size= " + args.length);
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]=" + args[i]);
}
}
}
```
被注釋掉的代碼,不會再執行。在IntelliJ 可以使用快捷鍵 `Ctrl+/`注釋掉某行。例如我可以選項某行,或者多個行,然后按下 `Ctrl+/`,這樣子就會注釋掉所選的行。如果是多行注釋就是 `Ctrl+Shift+/`。
### 多行注釋(Multi Line Comments)
多行注釋由正斜杠和星號開始,即 `/*` 所以如果我現在輸入 `/*` 下邊的代碼就不再編譯了,提示由編譯錯誤了。Unclose comment。 所以為了關閉這個多行注釋塊,我們需要輸入 `*/`。 這樣就形成了多行注釋,或者是塊注釋(Block Comments),所以就是有一對的,開閉的。 `/* */` 例如下面代碼就是注釋掉了 for 循環。
```java
package io.zwt;
public class Main {
public static void main(String[] args) {
// printing size of arguments
//
//
//System.out.println("args-size= " + args.length);
/*
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]=" + args[i]);
}
*/
}
}
```
接下來我們恢復for循環,在它上面寫多行注釋:
```java
package io.zwt;
public class Main {
public static void main(String[] args) {
// printing size of arguments
//
//
//System.out.println("args-size= " + args.length);
/*
* printing arguments
* another line.
*/
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]=" + args[i]);
}
}
}
```
### JavaDoc風格注釋
還有一種注釋就是JavaDoc風格的注釋,也就是文檔注釋,它們可以被JavaDoc文檔工具處理。如果你使用JavaDoc工具生成文檔,這些注釋里的內容就會出現在文檔上。
在IntelliJ 里面創建的JavaDoc風格的注釋,是輸入 `/**` 然后按`Enter`這樣就會是JavaDoc風格的注釋。因為它開頭是 `/**`兩個星號,然后換行。
JavaDoc風格的注釋通常出現在類或者是方法頭上。它其實也可以在變量上,但是不用擔心這個,后面遇到了會講的。所以然我們在Main類里邊再添加一個JavaDoc注釋。
在main方法的頭上,輸入`/**`按下Enter,發現IntelliJ自動生成了JavaDoc注釋,并且添加了 `@param args`。所以這就是方法的參數。如果我們的方法有多個參數,它會添加所有的參數的。然后我們可以為這些參數添加注釋了。還可以給方法本身添加注釋,例如:
```java
package io.zwt;
public class Main {
/**
* This is main method.
* @param args command line arguments
*/
public static void main(String[] args) {
// printing size of arguments
//
//
//System.out.println("args-size= " + args.length);
/*
* printing arguments
* another line.
*/
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]=" + args[i]);
}
}
}
```
如果方法有返回值,創建JavaDoc注釋時,IntelliJ還會自動添加返回值類型`@return`,例如下面:
```java
package io.zwt;
public class Main {
/**
* This is main method.
* @param args command line arguments
*/
public static void main(String[] args) {
// printing size of arguments
//
//
//System.out.println("args-size= " + args.length);
/*
* printing arguments
* another line.
*/
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]=" + args[i]);
}
}
/**
*
* @param a
* @param b
* @return
*/
public static int sum(int a, int b) {
return a + b;
}
}
```
上面的 sum 方法只是一個簡單的方法,只是為了演示JavaDoc注釋。在這個方法上面用IntelliJ 創建JavaDoc,可以看到:
```
/**
*
* @param a
* @param b
* @return
*/
```
兩個參數的注釋,還有返回值的注釋,所以我們可以說:
```java
/**
* 計算兩個整數的和
* @param a 操作數
* @param b 操作數
* @return 求和
*/
public static int sum(int a, int b) {
return a + b;
}
```
所以如果我們在main方法里邊調用這個 sum方法,可以看到IntelliJ提示它需要兩個參數,而且如果我們用 `Ctrl+Q`查看一下快速文檔,我們也可以看到注釋所寫的內容。這就是JavaDoc注釋的作用。
所以就算是在自己的代碼,寫JavaDoc注釋也很有幫助,有助于了解各個部分,各個方法的作用。
- 0.考試大綱解讀
- 1.內容簡介與環境搭建
- 1.1內容簡介
- 1.2.在Windows安裝JDK8
- 2.Java基礎
- 2.1.Java類結構
- 2.2.main方法
- 2.3.注釋
- 2.4.package與import
- 2.5.命名沖突與代碼格式
- 2.6.靜態導入
- 2.7.理解原始數據類型
- 2.8.整數型原始類型
- 2.9.小數型原始類型
- 2.10.原始char與boolean
- 2.11.聲明和初始化變量
- 2.12.理解原始類型變量的默認初始化
- 2.13.變量作用范圍
- 2.14.類里面元素的順序
- 2.15.理解null
- 2.16.原始類型的包裝類
- 2.17.Java的好處
- 2.18.考試題目舉例
- 3.操作符
- 3.1.理解操作符
- 3.2.算術操作符
- 3.3.數值類型提升以及類型轉換
- 3.4.一元操作符第一部分
- 3.5.一元操作符第二部分
- 3.6.賦值運算符
- 3.7.復合賦值運算符
- 3.8.關系操作符
- 3.9.關系操作符
- 3.10.相等操作符
- 3.11.理解 == 與 equals()方法
- 3.12.字符算術運算
- 3.13.考試題目舉例
- 4.基本程序控制流
- 4.1.if else語句
- 4.2.三元操作符
- 4.3.switch語句
- 4.4.while循環
- 4.5.do-while循環
- 4.6.for循環
- 4.7.考試題目舉例
- 5.理解字符串類型
- 5.1.創建字符串以及字符串連接
- 5.2.理解不可變性
- 5.3.字符串常量池和字符串相等
- 5.4.String類的方法第一部分
- 5.5.String類的方法第二部分
- 5.6.方法串聯
- 5.7.使用StringBuilder類
- 5.8.StringBuilder類的方法
- 5.9.理解相等性
- 5.10.考試題目舉例
- 6.數組
- 6.1.理解數組
- 6.2.使用數組
- 6.3.數組常見的問題
- 6.4.For-each循環
- 6.5.break語句和標簽
- 6.6.continue語句
- 6.7.數據排序
- 6.8.搜索數組
- 6.9.可變數量參數
- 6.10多維數組
- 6.11嵌套循環
- 6.12考試題目舉例
- 7.ArrayList
- 7.1.理解ArrayList
- 7.2.ArrayList的方法第一部分
- 7.3.ArrayList的方法第二部分
- 7.4.在ArrayList使用包裝類
- 7.5.ArrayList與數組之間的轉換
- 7.6.ArrayList元素排序
- 7.7.搜索ArrayList
- 7.8.遍歷List第一部分
- 7.9.遍歷List第二部分
- 7.10.考試題目舉例
- 8.方法
- 8.1.設計一個方法
- 8.2.方法的返回類型
- 8.3.方法的參數列表
- 8.4.帶有數量可變參數的方法
- 8.5.訪問修飾符
- 8.6.靜態方法和字段
- 8.7.使用靜態方法和字段第一部分
- 8.8.使用靜態方法和字段第二部分
- 8.9.final方法
- 8.10.靜態初始化
- 8.11.在方法之間傳輸數據
- 8.12.方法的返回數據
- 8.13.重載方法
- 8.14.考試題目舉例
- 9.類設計
- 9.1.類的構造函數
- 9.2.默認構造函數
- 9.3.構造方法重載
- 9.4.this 與 this()的區別
- 9.5.初始化的順序
- 9.6.數據封裝
- 9.7.不可變類
- 9.8.類與繼承第一部分
- 9.9.類與繼承第二部分
- 9.10方法重寫
- 9.11.super 與 super()的區別
- 9.12.重載與重寫的區別
- 9.13.抽象類
- 9.14.抽象方法
- 9.15.創建接口
- 9.16.實現接口
- 9.17.接口的默認方法
- 9.18.接口的靜態方法
- 9.19.抽象類與接口的區別
- 9.20.多態
- 9.21.虛方法
- 9.22.參數多態
- 9.23.考試題目舉例
- 10.Java 8的日期和時間API
- 10.1.創建日期與時間
- 10.2.使用日期與時間
- 10.3.Periods
- 10.4.格式化日期和時間
- 10.5.解釋日期和時間
- 10.6.考試題目舉例
- 11.異常處理
- 11.1.理解異常處理
- 11.2.Checked 與 Unchecked 異常的區別
- 11.3.處理異常
- 11.4.使用finally語句塊
- 11.5.捕獲不同的異常
- 11.6.return 和 finally塊
- 11.7.拋出異常的方法
- 11.8.考試題目舉例
- 12.簡單的Lambda表達式
- 12.1.理解Lambda
- 12.2.使用Lambda
- 12.3.Predicates
- 12.4.考試問題舉例
- 13.福利
- 13.1.Anki記憶卡片