###### tags: `Java 學習筆記` # Java 學習筆記 - 1-1: 基礎資料型態介紹 ## 初始之地 檔案名稱需和第一段程式內的名稱相同 ```java= public class MainClass { public static void main(String[] args) { // TODO System.out.println("Hello World!") } } ``` 檔案名稱 = MainClass.java 初級先在標示 // TODO 這裡面寫 ## 變數與常數 變數: 可以被改變 常數: 不可被改變 ## The Data Type of Java Java 是一個物件導向的語言,總共有兩種資料型態:基本資料型態和參考資料型態,區分的方法為在記憶體中儲存的位置 (stack & heap) ![](https://i.imgur.com/XegqvkT.png) ![](https://i.imgur.com/yTfixOq.png) 1. 布林 boolean (Default: false) 2. 字元 char 3. 浮點數 (小數) float (儲存方式為科學記號) 4. 浮點數 (小數) double - Default 5. 整數 byte 6. 整數 short 7. 整數 int - Default 8. 整數 long ## 使用示範 ```java= int x; // 宣告一個叫做 x 的 int,每一行結束都要用 ; 做分隔 x = 2; // 把 x 賦值 2,第一次給值又叫做初始化 (initialize) x = 3; // 把 x 重新賦值 3,第二次叫做賦值 System.out.println(x) // 印出並且換行,如不換行,把 println 改為 print 即可 int x, y; // 宣告兩個存放整數的空間 x & y,中間用逗號作區別 double a; // 宣告一個存放浮點數的空間 a,整數不能存浮點數,印出來就算是整數也會帶小數 .0 boolean b; // boolean 只會有 true or false char c; // 宣告一個存放 unicode (一種字元編碼) 字元的空間,一次只能存取一個字元 String a; // 宣告一個字串 a a = "abc"; // 存入字串 System.out.println(a + x); // 會印出 abc3 (如忽略第 5 行) ``` 1. 沒被初始化的變數會被認為是錯誤(其實沒有錯但會對IDE造成風險) 2. 字串可以跟任何的基本資料做串接 ## 變數宣告的注意事項 1. 第一個字必須為字母且為小寫 2. 駝峰式命名: 第一個字小寫,之後的第一個字都大寫 ## 自動轉型 & 強制轉型 ### 自動轉型 ```java= public class MainClass { public static viod main(String[] args) { double a = 5; // 自動轉型 float f = 5.0; // 不會自動轉型,因為比較小的可以轉乘比較大的,但比較大的不能存在比較小的 float f = 5.0f; // 這樣才能轉型 (因為預設式double) char c = 97; // 可以自動轉型,整數預設可以轉成字元或是浮點數 } } ``` #### 最常用到整數跟浮點數的轉換 ### 強制轉型 ```java= public class MainClass { public static viod main(String[] args) { double a = 5.5; int b; b = (int)a; // 強制將 double 轉型為 int // 強制轉型會造成資料遺失,該行程式碼會印出 5,不會進行四捨五入 float f = (int)a; // f = 5.0 dount >> int >> float } } ``` ### 補充資料 * 強制轉型盡可能只用在基本資料型態,但盡量不要用 * 整數是特例,可以轉成字元,可透過 ASCII Code 查找,其中最常用 65 & 97,各代表 A & a * unicode 跟 ASCII 是匹配的 * Java 是一個跨平台的語言,因為有 JVM (Java Virtul Machine),每個平台都有其應對的 JVM * 按下編譯的按鈕後代表,把 .java 的檔案編譯成byte code .class,然後再用 JVM 去執行這個 .class 的檔案 * 有分為編譯錯誤和執行錯誤 (邏輯錯誤或預期外的錯誤) * Java 偏強型別語言 (型別檢查上較為嚴格,不容許隱性轉換) * 對程式來說;才等於換行