###### 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了,出去指令還是一樣。 ##