###### tags: `JAVA`
# 9/22 基本資料類型
---
## 基本資料類型 (整數)
| 名稱 | Bytes | 科學記號 | 初值 | 範圍 |
| -------- | -------- | -------- | -------- | -------- |
| byte | 1 | -2^7^~2^7^-1 |0 | -128~127 |
| short | 2 | -2^15^~2^15^-1 |0 | -32768~32767 |
| int | 4 | -2^31^~2^31^-1 |0 | 約±21億 |
| long | 8 | -2^63^~2^63^-1 |0L | 約±9.2\*10^18^ |
#1 byte = 8 bits
---
## 宣告變數
跟電腦要個記憶體存放變數
### 宣告方法
#### 單一變數 先宣告後賦值
* 資料型態 變數名稱;
* 變數名稱=賦予值;
```
int apple;
apple = 7;
```
#宣告變數只能一次,但值可以重複賦予。
#### 單一變數 宣告同時賦值
* 資料型態 變數名稱=賦予值;
```
int apple = 7;
```
#### 多個同型態變數 可連續宣告
* 資料型態 變數們以逗號區隔;
* 資料型態 變數們附值以逗號區隔
```
int a,b,c;
int a=1,b=2,c=3;
```
### 變數命名規則
#### 硬規定
* 命名材料:a\~z、A\~Z、0\~9、$、_
* 開頭不能是數字
* 不能是預設關鍵字(public、long、void...等)
#### 非強制規則(遵守才是好工程師)
* 這樣的變數名長得像駝峰(Camel Case)
* 小寫開頭
* 後面還有其他單字要大寫開頭
* 命名要簡短有意義
* 命名舉例 : *lichKing 巫妖王*
#### 例外
* 常數變數(Constant)通常全部大寫
```
Alt+shift+R 可一次改名同個變數(refactor)
```
#### 補充個Java常用命名方式
* package name (全小寫) : xxxyyyzzz
* 類名、介面名 (大駝峰) : XxxYyyZzz
* 變數名、方法名 (小駝峰): xxxYyyZzz
* 常量名 (大寫蛇形) : XXX_YYY_ZZZ
---
## byte 怎麼計算 (8 bits)
最左邊的數代表正負(0+、1-)
10000000 = -128
00000001 = +1
---
## 基本資料類型 (浮點數)
| 名稱 | Bytes | 科學記號 | 初值 | 說明 |
| -------- | -------- | -------- | -------- | -------- |
| float | 4 | ±3.4\*10^38^\~ ±1.4\*10^-45^ |0.0f | 精度7位,預設Double所以要加f。 |
| double | 8 | ±1.8\*10^308^\~ ±4.9\*10^-32^ |0.0 | 精度15位,小數點都預設Double。 |
#精度為保證沒錯的位數
#浮點數計算不精確但很快,另有BigDecimal可正確計算(較慢,JDBC會教)
## 基本資料類型 (字元及布林)
| 名稱 | Bytes | 科學記號 | 初值 | 說明 |
| -------- | -------- | -------- | -------- | -------- |
| char | 2 | 0~2^16^-1 |\u0000 | Java內部計算用UTF-16 |
| boolean | 1 bit | true(1),false(0) |false | |
## 條件運算(boolean)
| | 說明 |
| -------- | -------- |
| && | 交集,左邊為False就不計算了(結果為False)。 |
| \|\| | 聯集,左邊為True就不計算了(結果為True)。 |
| \! | 反布林值 |
| \& |交集,但兩邊都會運算。 |
| \| | 聯集,但兩邊都會運算。 |
| \^ | 兩側相反為True。 |
## 位元運算子(0 or 1)
| | 說明 |
| -------- | -------- |
| \& | 兩邊都1,結果為1。 |
| \| | 一邊為1,結果為1。 |
| \^ | 兩邊分別為0,1則1。 |
| \~ | 0,1互換。 |
#實例:
律師1,醫師2,教師4,工程師8
數字5職業為0101=0001|0100是律師也是老師
## 三元運算(A?B:C)
```
A為Boolean
B為True result
C為False result
```
翻譯:
A是否為真? 是則B,否則C。
## 遞增、遞減運算
System.out.println((a++)+" "+a);
System.out.println(a);
Result:10 11
Result:11
在同個指令內,後面的a被加1了,出去指令還是一樣。
##