# 2023/03/25 大綱 #### 1, 搜尋 Open JDK 17 以及 Eclipse. * Oracle jdk 17 https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html * zulu jdk 17 https://www.azul.com/downloads/ * Eclipse https://www.eclipse.org/downloads/ #### 2, Java 版本演進。 1-4 * 簡述版本,以及跨平台的特性(JVM)。 * JAVA 版本演進 https://zh.wikipedia.org/zh-tw/Java%E7%89%88%E6%9C%AC%E6%AD%B7%E5%8F%B2 #### 3, 介紹 open jdk 及 oracle jdk 的差別在哪,推薦用什麼 jdk。 1-10 * Oracle 商用版本可能會被收費。 * 當年新聞事件 https://www.google.com/search?q=jdk+1.8+%E6%94%B6%E8%B2%BB * 開發商用專案時的版本選擇,要注意 LTS 問題 1-12 * JDK 支援時程表 https://www.azul.com/products/azul-support-roadmap/ * LTS 是一個長期得到支援的軟體版本,而 STS 則是一個只得到短期支援的軟體版本, MTS 是用於測試新軟體的系統。 #### 4, JVM, JDK, JRE 各別是什麼意思? 1-13 JVM、JDK 和 JRE 是 Java 開發與執行的相關技術,它們的用途如下: JVM(Java Virtual Machine):Java 虛擬機,是 Java 語言最重要的核心, 它提供了一個運行 Java 程式的環境,負責將 Java 程式編譯後的字節碼轉換成機 器碼,並執行程式。JVM 是一個跨平台的虛擬機,Java 程式在不同平台上運行時都 需要 JVM 的支持。 JDK(Java Development Kit):Java 開發工具包,包括了開發 Java 程式 所需要的所有工具和庫,如編譯器(javac)、JavaDoc 工具、JVM 等。JDK 包 含了 JRE,以及開發 Java 程式所需的開發工具,如編譯器、調試器、代碼分析工 具等。如果你需要開發 Java 程式,則需要安裝 JDK。 JRE(Java Runtime Environment):Java 運行環境,包含了 JVM 和 Java 程式執行所需的庫文件等,但不包括開發工具,如編譯器、調試器等。如果你只需要 執行 Java 程式,則只需要安裝 JRE。 簡單來說, 1, JVM 提供了一個運行 Java 程式的環境。 2, JDK 是一個包含了開發 Java 程式所需的所有工具和庫的開發工具包。 3, JRE 則是一個只包含了 Java 程式執行所需的庫文件等的運行環境。 #### 5, 安裝 JDK. 1-17 * windows 可以找 .msi 安裝檔,macOS 可以找 .dmg 檔案安裝,路徑問題就可以不用處理。 * 但能學會怎麼處理路徑問題,仍然是比較好。 #### 6, 路徑參數設定. 2-7 * https://ithelp.ithome.com.tw/articles/10259338 * 其他系統相關設定:顯示副檔名最好是打開 #### 7, 檢查安裝是否成功. 2-34 * 平時檢查環境版本也很常使用的指令 * windows : cmd -> java -version * macOs/Linux : terminal -> java -version #### 8, 安裝 IDE Eclipse, 也順便介紹一下 Intellij. 2-28 * https://www.jetbrains.com/idea/download/#section=windows #### 9, 新增專案 (2-31), package, class, 定義區塊 等. * 先直接照預設值使用,等後面課程再詳細解釋。 #### 10, 大略了解 main 的作用 2-4 * https://ithelp.ithome.com.tw/articles/10213592 #### 11, 第一個程式, Hello World. 解釋什麼是 literal constant 字面常量 3-8 * 若不使用變數,有大量的字面常量要修改時,就會產生困擾 * 在此討論一些 reuse 的概念 #### 12, 說明變數使用, 宣告形態 * 如何宣告變數: 類別 名稱 = 值; * 舉例: String text = "123"; * 若重複宣告會如何? * 何謂變數 https://openhome.cc/zh-tw/java/syntax-abc/variable/ * 宣告變數:國中數學有教過 a = 1, b = 2 這樣的概念 * 八種基本形態 Primitive type 3-2 其中較常用的是 int long double boolean 等四種 https://openhome.cc/zh-tw/java/syntax-abc/type/ * 數值形態的變數,其值會有上下限。 * http://kaiching.org/pydoing/java-guide/unit-03-primitive-data-type-and-reference.html #### 13, 說明物件形態與基本形態的差異,及使用方式、限制 * 常用的類別形態 class type 或稱參考形態 reference type https://grantliblog.com/2020/10/24/30%e5%a4%a9%e6%89%8b%e6%8a%8a%e6%89%8b%e5%b8%b6%e4%bd%a0%e8%b7%9fjava%e8%ae%8a%e6%88%90%e5%a5%bd%e6%9c%8b%e5%8f%8b-day3-java%e5%9f%ba%e6%9c%ac%e5%9e%8b%e6%85%8b%e3%80%81%e8%ae%8a%e6%95%b8/ * String, Integer, Double, Float, Long #### 14, 運算子,比較,運算邏輯 * 加(+)減(-)乘(*)除(/)及餘數(%)的運用。 3-10 小數點的除法要用含有小數點的數字,除起來才會正確。 * double d1 = 3/2; //若印出答案會顯示 1, 錯誤 * double d2 = 3.0/2; //若印出答案會顯示 1.5, 正確 * 各種值之間的比較 3-11 * AND(&&) 及 OR(||) 的用法 3-12 * 遞增遞減運算 (++ - - 的運算) 3-16 * int i = 1; * i ++; //i 為 2 * 解說 ++ i 與 i ++ 的差異。 * https://xanxusvervr.blogspot.com/2016/04/java-i-i_52.html * 指定運算 3-17 * int i = 1; * i += 1; //i 為 2 #### 15, 變數的形態轉換 * 數字類型的變數預設類型,以及形態轉換提升 數字類預設是 int, 即使將形態指定為 long 小數類預設是 double, 即使將形態指定為 float * 手動轉換形態 #### 16, if else switch 3-22 #### 17, 迴圈 for, while 3-29 --- ## 練習題目: 1, 寫一個 Java 程式,該程式從用戶獲取一個整數 n, 然後列印出所有小於等於 n 的質數。 * 參考連結 http://euler.tn.edu.tw/think32.htm 2, 寫兩個方法,各傳入一個整數 n,然後計算 1 到 n 的所有數字的和。 * 第一個方法,使用迴圈。 * 第二個方法,使用國中數學公式:上底加下底乘以高除以二。 3, 寫一個方法,該方法將一個字串反轉。 * 如果輸入的字串內容是 "hello",那麼答案必須顯示 "olleh"。 * 如果輸入的字串內容是 "greater",那麼答案必須顯示 "retaerg"。 笨笨的寫法提示: String text = "hello"; int textLength = text.length(); //text 字串長度 System.out.println(textLength); //把變數印出,這邊會印出 5 //text.charAt(數字) + ""; //會回傳 text 這個字串的第幾個字, 不過回傳的會是 char 這個形態, //所以後面加上 + ""; 讓他變成一個標準的字串。 String t1 = text.charAt(0) + ""; //h String t2 = text.charAt(1) + ""; //e String t3 = text.charAt(2) + ""; //l String t4 = text.charAt(3) + ""; //l String t5 = text.charAt(4) + ""; //o System.out.println(t5 + t4 + t3 + t2 + t1); 請思考一個聰明一點的寫法。 ## memo 位元,位元組 https://openhome.cc/zh-tw/java/syntax-abc/type/ https://www.binaryconvert.com/convert_signed_int.html 位元轉換 https://blog.miniasp.com/post/2010/04/08/unit-information-Bit-Byte-KB-MB-GB-TB-PB-EB-ZB-YB * int isVariable; * 在這狀態下, isVariable 稱為變數(variable) * public static int functionName(int isParameter) {} * 在這狀態下, isParameter 稱為參數(parameter) * functionName(123) * 在這狀態下, 123 稱為引數(argument) ###### tags: `course b`, `course`