JavaSE學習思維導圖 目錄1 Java語言概述1.1 Java 概述1.2 Java 語言簡史1.3 Java 之父1.4 Java 技術體系平臺2 Java 開發環境搭建2.1 JDK JRE2.2 JDK版本的選擇2.3 JDK 的下載2.4 JDK 的安裝2.5 配置path環境變數2.5 ...
JavaSE學習思維導圖
1 Java語言概述
1.1 Java 概述
- 是SUN(Stanford University Network,斯坦福大學網路公司 ) 1995年推出的一門高級編程語言。
- 是一種面向Internet的編程語言。Java一開始富有吸引力是因為Java程式可以在Web瀏覽器中運行。這些Java程式被稱為Java小程式(applet),內嵌在HTML代碼中。
- 伴隨著互聯網的迅猛發展,以及Java技術在web方面的不斷成熟,已經成為Web應用程式的首選開發語言。
1.2 Java 語言簡史
起步階段:
1991年,Sun公司的工程師小組想要設計一種語言,應用在電視機、電話、鬧鐘、烤麵包機等家用電器的控制和通信。由於這些設備的處理能力和記憶體都很有限,並且不同的廠商會選擇不同的中央處理器(CPU),因此這種語言的關鍵是代碼短小、緊湊且與平臺無關(即不能與任何特定的體繫結構捆綁在一起)。
Gosling團隊率先創造了這個語言,並命名為“Oak"(起名的原因是因為他非常喜歡自己辦公室外的橡樹)。後因智能化家電的市場需求沒有預期的高,Sun公司放棄了該項計劃。
隨著20世紀90年代互聯網的發展,Sun公司發現該語言在互聯網上應用的前景,於是改造了Oak,於1995年5月以Java的名稱正式發佈。(Java是印度尼西亞爪哇島的英文名稱,因盛產咖啡而聞名。)
發展階段:
發行版本 | 發行時間 | 備註 |
---|---|---|
Java 1.0 | 1996.01.23 | Sun公司發佈了Java的第一個開發工具包 |
Java 1.1 | 1997.02.19 | JavaOne會議召開,創當時全球同類會議規模之最。 |
Java 1.2 | 1998.12.08 | Java拆分成:J2SE(標準版)、J2EE(企業版)、J2ME(小型版) |
Java 1.3 | 2000.05.08 | |
Java1.4 | 2004.02.06 | |
*Java 5.0* | *2004.09.30* | *①版本號從1.4直接更新至5.0;②平臺更名為JavaSE、JavaEE、JavaME* |
Java 6.0 | 2006.12.11 | 2009.04.20 Oracle宣佈收購SUN公司 |
2009.04.20 | Oracle公司收購SUN,交易價格74億美元。 | |
Java 7.0 | 2011.07.02 | |
*Java 8.0* | *2014.03.18* | *此版本是繼Java 5.0以來變化最大的版本。是長期支持版本(LTS)* |
Java 9.0 | 2017.09.22 | ①此版本開始,*每半年更新一次*;②Java 9.0開始不再支持windows 32位系統 |
Java 10.0 | 2018.03.21 | |
*Java 11.0* | *2018.09.25* | *JDK安裝包取消獨立JRE安裝包,是長期支持版本(LTS)* |
Java 12.0 | 2019.03.19 | |
... | ... | |
*Java17.0* | *2021.09* | *發佈Java 17.0,版本號也稱為21.9,是長期支持版本。* |
... | ... | |
Java19.0 | 2022.09 | 發佈Java19.0,版本號也稱為22.9。 |
1.3 Java 之父
詹姆斯·高斯林(James Gosling)先生以“Java 技術之父”而聞名於世。他是Java 技術的創始人,他親手設計了Java語言,並開發了Java編譯器和Java虛擬機,使Java成為了世界上最流行的開發語言。
James Gosling於1984 年加入Sun公司,並一直服務於Sun公司,直至2010年前後,Sun被Oracle併購而加入Oracle,擔任客戶端軟體集團的首席技術官; 2010年4月從Oracle離職。
1.4 Java 技術體系平臺
Java SE(Java Standard Edition)標準版:
- 支持面向桌面級應用(如Windows下的應用程式)的Java平臺,即定位個人電腦的應用開發。
- 包括用戶界面介面AWT及Swing,網路功能與國際化、圖像處理能力以及輸入輸出支持等。
- 此版本以前稱為J2SE
Java EE(Java Enterprise Edition)企業版:
- 為開發企業環境下的應用程式提供的一套解決方案,即定位在伺服器端的Web應用開發。
- JavaEE是JavaSE的擴展,增加了用於伺服器開發的類庫。如:Servlet能夠延伸伺服器的功能,通過請求-響應的模式來處理客戶端的請求;JSP是一種可以將Java程式代碼內嵌在網頁內的技術。
- 版本以前稱為J2EE
Java ME(Java Micro Edition)小型版:
- 支持Java程式運行在移動終端(手機、機頂盒)上的平臺,即定位在消費性電子產品的應用開發。註意:Android開發不等同於Java ME開發
- JavaME是JavaSE的內伸,精簡了JavaSE 的核心類庫,同時也提供自己的擴展類。增加了適合微小裝置的類庫:javax.microedition.io.*等。
- 此版本以前稱為J2ME
2 Java 開發環境搭建
2.1 JDK JRE
- JDK (Java Development Kit):是Java程式開發工具包,包含JRE 和開發人員使用的工具。
- JRE (Java Runtime Environment) :是Java程式的運行時環境,包含JVM 和運行時所需要的核心類庫。
如下是Java 8.0 Platform:
簡單來說,
JDK = JRE + 開發工具集(例如Javac編譯工具等)
JRE = JVM + Java SE標準類庫
2.2 JDK版本的選擇
- 大多數java程式員都選擇長期支持的版本,例如jdk8、jdk11、jdk17、jdk21
- 根據個人或企業需求選用jdk的版本
發行版本 | 發行時間 | 備註 |
---|---|---|
Java 1.0 | 1996.01.23 | Sun公司發佈了Java的第一個開發工具包 |
Java 1.1 | 1997.02.19 | JavaOne會議召開,創當時全球同類會議規模之最。 |
Java 1.2 | 1998.12.08 | Java拆分成:J2SE(標準版)、J2EE(企業版)、J2ME(小型版) |
Java 1.3 | 2000.05.08 | |
Java1.4 | 2004.02.06 | |
*Java 5.0* | *2004.09.30* | *①版本號從1.4直接更新至5.0;②平臺更名為JavaSE、JavaEE、JavaME* |
Java 6.0 | 2006.12.11 | 2009.04.20 Oracle宣佈收購SUN公司 |
2009.04.20 | Oracle公司收購SUN,交易價格74億美元。 | |
Java 7.0 | 2011.07.02 | |
*Java 8.0* | *2014.03.18* | *此版本是繼Java 5.0以來變化最大的版本。是長期支持版本(LTS)* |
Java 9.0 | 2017.09.22 | ①此版本開始,*每半年更新一次*;②Java 9.0開始不再支持windows 32位系統 |
Java 10.0 | 2018.03.21 | |
*Java 11.0* | *2018.09.25* | *JDK安裝包取消獨立JRE安裝包,是長期支持版本(LTS)* |
Java 12.0 | 2019.03.19 | |
... | ... | |
*Java17.0* | *2021.09* | *發佈Java 17.0,版本號也稱為21.9,是長期支持版本。* |
... | ... | |
Java19.0 | 2022.09 | 發佈Java19.0,版本號也稱為22.9。 |
... | ... |
2.3 JDK 的下載
-
下載網址(Oracle公司官網):www.oracle.com
-
下載步驟:
- 在官網底部選擇Developers開發者
- 在Developers頁面的頂部,選擇Downloads,單擊進入後點擊Java SE,如圖所示:
- 這裡展示的是最新的幾個Java版本,例如jdk21、jdk17。單擊Java archive,然後選擇需要的版本下載。
- 註意:需要註冊Oracle公司官網的賬號才能進行下載。
2.4 JDK 的安裝
安裝說明:
- 安裝路徑不要有中文或者空格等特殊符號。
- 以安裝JDK8 和 JDK17作為例子,安裝步驟如下。
安裝步驟:
-
雙擊jdk-17_wi:ndows-x64_bin.exe文件,並單擊下一步,如下
-
修改安裝路徑,單擊更改,如下
-
將安裝路徑修改為你想安裝的路徑下並記住該詳細路勁,例如我的安裝路徑D:\develop_tools\jdk\jdk-17.0.2\,並單擊下一步開始安裝,如下(當系統盤空間足夠大時也可以選擇預設路徑安裝)
-
等待安裝完成即可
2.5 配置path環境變數
2.5.1 path環境變數是什麼?
window操作系統執行命令時,所要搜尋的路徑。
2.5.2 為什麼需要配置path環境變數
希望在命令行使用javac.exe等工具時,任意目錄下都可以找到這個工具所在的目錄。
2.5.3 配置 path環境變數
-
打開桌面上的電腦-->進入後在左側找到此電腦-->單擊滑鼠右鍵-->選擇屬性-->選擇高級系統設置-->在高級選項卡,單擊環境變數
-
在系統變數中,單擊新建 ,創建新的環境變數,如圖所示:
-
變數名輸入JAVA_HOME,變數值輸入D:\Java\JDK\jdk1.8.0_271(註意:這裡是jdk的安裝路徑),單擊確定,如圖所示:
-
選中Path 環境變數,雙擊或者點擊編輯 ,如圖所示:
-
在變數值的最前面,鍵入%JAVA_HOME%\bin。如圖所示:
-
環境變數配置完成,重啟DOS命令行,在任意目錄下輸入javac 或java命令或java -version,運行成功。
-
引用理解
2.5.4 JDK17配置方案:自動配置
不管大家有沒有提前安裝JDK8或其它版本JDK,在我們安裝完JDK17之後,理應按JDK8的方式配置path環境變數。但是,我們發現在安裝完JDK17以後,配置環境變數之前,執行CMD指令:
原因:JDK17在安裝之後,自動進行了環境變數的配置。如下:
這裡之前安裝jdk8設置的JAVA_HOME路徑未修改的話,將path中的%JAVA_HOME%\bin上移到首位,會發現系統所找的還是jdk8版本。
小結:
- 安裝了多個版本jdk時,可以通過修改系統變數值中JAVA_HOME的變數值來使用指定的jdk版本,或者通過調整Path中的對應版本的配置先後順序來使用對應版本的jdk。
3 開發體驗:HelloWorld
JDK安裝完畢,我們就可以開發第一個Java程式了,習慣性的稱為:HelloWorld。
3.1 開發步驟
Java程式開發三步驟:編寫、編譯、運行
- 將 Java 代碼編寫到擴展名為 .java 的源文件中
- 通過 javac.exe 命令對該 java 文件進行編譯,生成一個或多個位元組碼文件
- 通過 java.exe 命令對生成的 class 文件進行運行
3.2 編寫
-
新建文本文件,文件名修改為HelloWorld.java,其中文件名為HelloWorld,尾碼名必須為.java。
-
用記事本或editplus等文本編輯器打開(雖然記事本也可以,但是沒有關鍵字顏色標識,不利於初學者學習)
-
在文件中輸入如下代碼,並且保存:
class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld!!"); } }
3.3 編譯
在DOS命令行中,進入D:\code\javacode\chapter01目錄,使用javac 命令進行編譯。
命令:
javac Java源文件名.尾碼名java
編譯成功後,命令行沒有任何提示。打開D:\code\javacode\chapter01目錄,發現產生了一個新的文件 HelloWolrd.class,該文件就是編譯後的文件,是Java的可運行文件,稱為位元組碼文件,有了位元組碼文件,就可以運行程式了。
3.4 運行
在DOS命令行中,在位元組碼文件目錄下,使用java 命令進行運行。
命令:
java 主類名字
主類是指包含main方法的類,main方法是Java程式的入口:
運行:
java HelloWorld
4 Java 開發工具
- 文本開發工具
- 集成開發工具
5 註釋
5.1 什麼是註釋?
- 源文件中用於解釋、說明程式的文字就是註釋。
- 註釋是一個程式員必須要具有的良好編程習慣。實際開發中,程式員可以先將自己的思想通過註釋整理出來,再用代碼去體現。
- 在一個程式中,代碼不存在邏輯錯誤、bug等問題,不寫註釋不影響程式的運行。
- 程式員寫註釋是必須的,在電腦語言中,註釋是電腦語言的一個重要組成部分,用於在源代碼中解釋代碼的作用,可以增強程式的可讀性,可維護性。
- Java 註釋主要有三種類型:單行註釋、多行註釋、文檔註釋
5.2 單行註釋
單行註釋以雙斜杠 // 開始:
//這是一個單行註釋
public static void main(String[] args){
}
5.3 多行註釋
多行註釋以 /*開始,以 */結束:
/*
這是一個多行註釋
可以用來註釋多行代碼
*/
int y = 20; // 初始化一個變數y為20
5.3 文檔註釋
文檔註釋以 /** 開始,以 */ 結束,通常出現在類、方法、欄位等的聲明前面,用於生成代碼文檔,這種註釋可以被工具提取並生成 API 文檔,如 JavaDoc。
/**
*這是一個文檔註釋示例
*它通常包含類、方法、欄位的詳細信息
*/
public class MyClass{
...
}
文檔註釋的格式通常包含一些特定的標簽,如,@param 用於描述方法參數,@return 用於描述返回值,@throws 用於描述可能拋出的異常等等,這些標簽有助於生成清晰的API文檔,以便其他開發者能夠更好地理解和使用你的代碼。例子:
/**
* ClassName: HelloWorld
* @Author termsw
* @Create 2023/12/19 9:05
* @Version 1.0
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
文檔註釋內容可以被JDK提供的工具 javadoc 所解析,生成一套以網頁文件形式體現的該程式的說明文檔。
javadoc -d mydoc -author -version Java源文件名.尾碼名java
6 Java API文檔
- API (Application Programming Interface,應用程式編程介面)是 Java 提供的基本編程介面。
- Java語言提供了大量的基礎類,因此 Oracle 也為這些基礎類提供了相應的說明文檔,用於告訴開發者如何使用這些類,以及這些類里包含的方法。大多數Java書籍中的類的介紹都要參照它來完成,它是編程者經常查閱的資料。
- Java API文檔,即為JDK使用說明書、幫助文檔。
- 下載API文檔:
7 Java 核心機制:JVM
7.1 Java 語言的優缺點
Java確實是從C語言和C++語言繼承了許多成份,甚至可以將Java看成是類C語言發展和衍生的產物。“青出於藍,而勝於藍”。
7.1.1 Java語言的優點
跨平臺性:這是Java的核心優勢。Java在最初設計時就很註重移植和跨平臺性。
- 通過Java語言編寫的應用程式在不同的系統平臺上都可以運行。“Write once , Run Anywhere”。
- 原理:只要在需要運行 java 應用程式的操作系統上,先安裝一個Java虛擬機 (JVM ,Java Virtual Machine) 即可。由JVM來負責Java程式在該系統中的運行。
面向對象性:面向對象是一種程式設計技術,非常適合大型軟體的設計和開發。面向對象編程支持封裝、繼承、多態等特性,讓程式更好達到高內聚,低耦合的標準。
健壯性:吸收了C/C++語言的優點,但去掉了其影響程式健壯性的部分(如指針、記憶體的申請與釋放等),提供了一個相對安全的記憶體管理和訪問機制。
安全性高:Java適合於網路/分散式環境,需要提供一個安全機制以防惡意代碼的攻擊。如:安全防範機制(ClassLoader類載入器),可以分配不同的命名空間以防替代本地的同名類、位元組代碼檢查。
簡單性: Java就是C++語法的簡化版,我們也可以將Java稱之為“C++--”。比如:頭文件,指針運算,結構,聯合,操作符重載,虛基類等。
高性能:Java最初發展階段,總是被人詬病“性能低”;客觀上,高級語言運行效率總是低於低級語言的,這個無法避免。Java語言本身發展中通過虛擬機的優化提升了幾十倍運行效率。比如,通過JIT(JUST IN TIME)即時編譯技術提高運行效率。Java低性能的短腿,已經被完全解決了。業界發展上,我們也看到很多C++應用轉到Java開發,很多C++程式員轉型為Java程式員。
7.1.2 缺點
- 語法過於複雜、嚴謹,對程式員的約束比較多,與python、php等相比入門較難。但是一旦學會了,就業崗位需求量大,而且薪資待遇節節攀升。
- 一般適用於大型網站開發,整個架構會比較重,對於初創公司開發和維護人員的成本比較高(即薪資高),選擇用Java語言開髮網站或應用系統的需要一定的經濟實力。
- 並非適用於所有領域。比如,Objective C、Swift在iOS設備上就有著無可取代的地位。瀏覽器中的處理幾乎完全由JavaScript掌控。Windows程式通常都用C++或C#編寫。Java在伺服器端編程和跨平臺客戶端應用領域則很有優勢。
7.2 JVM功能說明
JVM(Java Virtual Machine ,Java虛擬機):是一個虛擬的電腦,是Java程式的運行環境。JVM具有指令集並使用不同的存儲區域,負責執行指令,管理數據、記憶體、寄存器。
- 功能1:實現Java程式的跨平臺性
我們編寫的Java代碼,都運行在JVM 之上。正是因為有了JVM,才使得Java程式具備了跨平臺性。
- 功能2:自動記憶體管理(記憶體分配、記憶體回收)
- Java程式在運行過程中,涉及到運算的數據的分配、存儲等都由JVM來完成
- Java消除了程式員回收無用記憶體空間的職責。提供了一種系統級線程跟蹤存儲空間的分配情況,在記憶體空間達到相應閾值時,檢查並釋放可被釋放的存儲器空間。
- GC的自動回收,提高了記憶體空間的利用效率,也提高了編程人員的效率,很大程度上減少了因為沒有釋放空間而導致的記憶體泄漏。
- 註意:Java程式還會出現記憶體溢出和記憶體泄漏的問題
練習:
案例:個人信息輸出(姓名,性別,家庭住址等)
public class PersonalInfo {
public static void main(String[] args) {
System.out.println("姓名:termsw");
System.out.println(""); //換行操作
System.out.println("性別:男");
System.out.println("家庭住址:xxxxxxx");
}
}