# 重點整理

### 一、變數

> 變數是程式語言中最基本的角色。常用來存放資料，使用之前要先宣告它欲儲存的資料型態。 讓我們來簡單的看看變數使用規則。

#### 變數規則 1：變數宣告

如以上的範例使用到 int 來宣告 num為整數變數；如果想同時宣告數個整數變數可以這樣寫：

```
int num1,num2,num3;  // 同時宣告 num1,num2,num3 為整數變數
```

#### 變數規則 2：資料型態

資料不可能只有整數，因此除了整數型態(int) 之外還有：

* 長整數 (long)
* 短整數 (short)
* 浮點數 (float)
* 倍精度浮點數 (double)

除了數值外，還有字元 (char) 字串 (String) 的資料型態；這些將於第三章有詳細的介紹。

#### 變數規則 3：變數名稱

通常變數會以其代表的意義來取名（如 num代表數字、sum代表總和），但不能使用到 Java 的關鍵字。\
另外盡量不要取a,b,c 等簡單的英文字母代表變數，因為如果程式越大，宣告的數量越多，將會增加閱讀及除錯的困難度。

#### 變數規則 4：名稱限制

不能有空白字元，第一個字元不能是數字。\
另外大小寫也有區分：Num 與 num 會被視為不同的變數。

#### 變數使用：變數預設

預設方式為為把等號 (=) 右邊的值設定給左邊的變數存放。

例如 n=20  代表把整數20設定給變數n存放。\
ch=’a’ 代表將字元 ‘a’ 設定給字元變數ch存放。

有三種方式進行設值（視寫程式時的需求來使用）

1. 宣告時設值：

   ```
   int num=5;
   ```
2. 宣告後設值

   ```
   int num,num2; num=1; num=5;
   ```
3. 在程式中適當位置宣告並設值：

```
 for(int num=1; num<=10; num++)
{
  ...
 }
```

### 二、輸出

左右括號之間的內容就是欲顯示在螢幕上的內容，稱為引數，\
引數可以是字元、字串、數值或運算式，引數之間可以以加號區隔。

若要印出字串，必須以一對雙引號 ( ”  ” ) 包住字串。

若要印出數值，則直接將變數填入。

如下方範例：

```
System.out.print("I have "+num+" books");
```

{% hint style="info" %}
另外此處的 加號「＋」是 合併連結 的意思，而不是運算用途。
{% endhint %}

### 三、識別字與關鍵字

#### 1. 識別字 (identifier)

> 變數、類別或者是函數的名稱為識別字。\
> 他是使用者自行定義的文字，由英文大小寫、數字或底線組合而成。

* 識別字名稱不能使用到 Java 關鍵字，第一個字母也必須是英文字母或底線 “\_”
* **空白字元**及**特殊符號**，如 # $ @ 不能出現在識別字內
* 識別字有大小寫之分，Num與num；Pi與pi 會被看成不同變數
* 變數與函數時常為 英文小寫字母開始。
* **類別** 為英文大寫字母開始。
* **常數** 為全部字元皆英文大寫。

#### 2. 關鍵字 (keyword)

> 關鍵字是編譯程式本身所使用的識別字。\
> 我們不能更改或重複定義它們。\
> 因此自行定義的函數或者變數名稱都不能與 Java 的關鍵字相同。

以下為 Java 關鍵字 ([表格來源](https://zh.wikibooks.org/zh-tw/Java/%E5%85%B3%E9%94%AE%E5%AD%97))

| 類別           | 關鍵字              | 說明         |
| ------------ | ---------------- | ---------- |
| 訪問控制         | private          | 私有的        |
| protected    | 受保護的             |            |
| public       | 公共的              |            |
| 類、方法和變量修飾符   | abstract         | 聲明抽象       |
| class        | 類                |            |
| extends      | 擴允,繼承            |            |
| final        | 最終值,不可改變的        |            |
| implements   | 實現（接口）           |            |
| interface    | 接口               |            |
| native       | 本地，原生方法（非Java實現） |            |
| new          | 新,創建             |            |
| static       | 靜態               |            |
| strictfp     | 嚴格,精準            |            |
| synchronized | 執行緒,同步           |            |
| transient    | 短暫               |            |
| volatile     | 易失               |            |
| 程序控制語句       | break            | 跳出循環       |
| case         | 定義一個值以供switch選擇  |            |
| continue     | 繼續               |            |
| default      | 默認               |            |
| do           | 運行               |            |
| else         | 否則               |            |
| for          | 循環               |            |
| if           | 如果               |            |
| instanceof   | 實例               |            |
| return       | 返回               |            |
| switch       | 根據值選擇執行          |            |
| while        | 循環               |            |
| 錯誤處理         | assert           | 斷言表達式是否為真  |
| catch        | 捕捉異常             |            |
| finally      | 有沒有異常都執行         |            |
| throw        | 拋出一個異常對象         |            |
| throws       | 聲明一個異常可能被拋出      |            |
| try          | 捕獲異常             |            |
| 包相關          | import           | 引入         |
| package      | 包                |            |
| 基本類型         | boolean          | 布爾型        |
| byte         | 字節型              |            |
| char         | 字符型              |            |
| double       | 雙精度浮點            |            |
| float        | 單精度浮點            |            |
| int          | 整型               |            |
| long         | 長整型              |            |
| short        | 短整型              |            |
| null         | 空                |            |
| 變量引用         | super            | 父類,超類      |
| this         | 本類               |            |
| void         | 無返回值             |            |
| 保留關鍵字        | goto             | 是關鍵字，但不能使用 |

### 四、提高程式可讀性

* 將程式加上註解
* 有意義的變數名稱
* 適當的空行
* 適當的縮排，使同一層級的敘述對齊

另外註解可以以「 // 」 符號；或者於「/\*    \*/」符號之間。

如以下範例：

```
int num1,num2,num3;  // 同時宣告 num1,num2,num3 為整數變數
char ch;    /* 宣告ch為字元 */
```
