---
# System prepended metadata

title: Java--基礎篇
tags: [Java]

---

---
tags: Java
---
# Java--基礎篇
## 工具
* 安裝最新版Java SE
(Java SE 每三年做長期更新支援版本 .LTS)
* 安裝FlowChart >>使用流程圖學習程式
  * 設定jdk目錄：C:\Program Files\Java\jdk.11...\bin
  * 先解除舊版本
## 基礎知識
* 識別字(identifier) v.s. 關鍵字(keyword)
識別字：非關鍵字，為程式設計者自訂的元素名稱
## 變數
* Java變數一定要先宣告才能使用
* 資料型態 變數名稱 = 初值
「=」：指派、定義；新的毀會取代舊的
```java=
int var1 = 10;
```
* 變數 = 常數、其他變數、運算式
變數位址(Address/Lvalue) = 變數值(Rvalue)
* 更改變數值就是指定一個新的變數值，不用重新宣告
  * 新的變數值可以是數值>>會變；其他變數名稱>>不會變 
* 宣告常數一定要指定常數值
final：變數值不能更改
```java=
final double PI = 3.1415926
```
## 基本資料型態
* 整數：byte、short、int、long
使用數值字尾型態的字元，把字面值指定成long長整數
```java=
2451l或2451L
```
* 浮點數：float、double
使用數值字尾型態的字元，把字面值指定成float或double浮點數
```java=
6.7f或6.7F
3.1415d或3.1415D
```
* 布林值：true或false
* 字元：char('單引號')、字串("雙引號")
  * Escape逸出字元
  ![](https://i.imgur.com/hEEZ54A.png)
## 運算式
* 運算子的優先順序
![](https://i.imgur.com/a5bWmFB.png)

* 算數運算子
![](https://i.imgur.com/dVgdD7Y.png)
* 關係運算子
![](https://i.imgur.com/1CBUcPt.png)

* 條件運算子
![](https://i.imgur.com/CcYnwLV.png)

* 位元運算子
![](https://i.imgur.com/rlv2TBI.png)

* 指定運算子
![](https://i.imgur.com/JafyqOX.png)

## 資料型態的轉換
* 型態的優先順序：
double > float > long > int > char > short > byte
* 寬基本型態轉換：若運算式擁有不同型態的運算元，會自動優先轉換成順序較高的型態
* 窄基本型態轉換：強迫轉換資料型態
    * 例如：a=27、b=5，原本結果為整數5
    r = (float)a / (flaot)b
    強迫轉換成浮點數float，其結果為5.4
## 流程控制結構
### 條件敘述
* if 單選條件敘述
若if條件運算式為true，就執行以下的程式區塊；若不符合，則跳出該程式區塊
```java=
if (條件運算式)｛
   程式敘述;
｝
```
* if/else 二選一條件敘述
若if條件運算式為true，就執行第一個程式區塊；false就執行第二個程式區塊
```java=
if (條件運算式) {
  程式敘述1;
}
else {
  程式敘述2;
}
```
* if/else if/else 多選一條件敘述
若if條件運算式為true，就執行第一個程式區塊；false就重複使用if/else條件進行下一次判斷
    * 條件小的先寫
```java=
if (條件運算式1) {
  程式敘述1;
}
else if (條件運算式2){
  程式敘述2;
}
else {
  程式敘述3;
}
```
* switch 多選一條件敘述
只需要依照符合條件，就可以執行不同程式區塊
    * case相當於「==」運算子
    * 利用break關鍵字跳出switch條件敘述
    * default非必要元素，為例外條件，若都沒有符合case的條件，就執行default程式區塊
```java=
switch (變數) {
  case 常數值1/"字串1":
      程式敘述1;
      break;
  case 常數值2/"字串2":
      程式敘述2;
      break;
  case 常數值3/"字串3":
      程式敘述3;
      break;
  default:
      程式敘述4;
      break;
}
```
* 巢狀條件 
if/else和switch條件敘述中可以擁有其他if/else或switch條件敘述

* 「?:」條件敘述運算子
使用條件來指定變數值
    * 「?」：if
    * 「:」：else
```java=
變數 = (關係/條件運算式)?變數值1：變數值2；

```
### 迴圈敘述
* 前測式for迴圈
順序：定義初始值>>條件運算式>>true>>程式敘述>>變數更新>>條件運算式....
直到條件不符合時就退出
```java=
for (定義初始值；條件運算式；變數更新) {
  程式敘述；
}
```
* 前測式while迴圈
順序：定義初始值>>條件運算式>>true>>程式敘述>>變數更新>>條件運算式....
直到條件不符合時就退出
```java=
定義初始值
while (條件運算式) {
  程式敘述；
  變數更新；
}
```
* 後測式do/while迴圈
順序：定義初始值>>程式敘述>>變數更新>>條件運算式>>true>>程式敘述>>變數更新...
直到條件不符合時就退出
    * 先執行程式敘述至少一次，再檢視條件
```java=
定義初始值
do {
  程式敘述；
  變數更新；
} while (條件運算式)；
```
* break和continue關鍵字
  * break：中斷迴圈
  * continue：繼續迴圈
* 巢狀迴圈 
迴圈當中可以有很多層迴圈

