# 重點整理

### 一、變數

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

#### 變數規則 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為字元 */
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://java.4-x.tw/java-02/java-02-2.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
