1. 程式人生 > >硬肝4.4w字為你寫成Java開發手冊

硬肝4.4w字為你寫成Java開發手冊

先來看一下本篇文章的思維導圖吧,我會圍繞下面這些內容進行講解。內容很乾,小夥伴們看完還希望不吝轉發。(高清思維導圖版本關注作者公眾號 `Java建設者` 回覆 `Java666` 獲取,其他思維導圖獲取方式在文末)。 ![](https://img2020.cnblogs.com/blog/1515111/202005/1515111-20200509064225879-1748594128.png) 下面開始我們的文章。 ## Java 概述 ### 什麼是 Java? Java 是 Sun Microsystems 於1995 年首次釋出的一種`程式語言`和計算平臺。程式語言還比較好理解,那麼什麼是 `計算平臺` 呢? >計算平臺是在電腦中執行應用程式(軟體)的環境,包括`硬體環境`和`軟體環境`。一般系統平臺包括一臺電腦的硬體體系結構、作業系統、執行時庫。 Java 是快速,安全和可靠的。 從膝上型電腦到資料中心,從遊戲機到科學超級計算機,從手機到網際網路,Java 無處不在!Java 主要分為三個版本 - JavaSE(J2SE)(Java2 Platform Standard Edition,java平臺標準版) - JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平臺企業版) - JavaME(J2ME)(Java 2 Platform Micro Edition,java平臺微型版)。 ### Java 的特點 * Java 是一門`面向物件`的程式語言 什麼是面向物件?`面向物件(Object Oriented)` 是一種軟體開發思想。它是對現實世界的一種抽象,面向物件會把相關的資料和方法組織為一個整體來看待。 相對的另外一種開發思想就是面向過程的開發思想,什麼面向過程?`面向過程(Procedure Oriented)` 是一種以過程為中心的程式設計思想。舉個例子:比如你是個學生,你每天去上學需要做幾件事情? 起床、穿衣服、洗臉刷牙,吃飯,去學校。一般是順序性的完成一系列動作。 ```java class student { void student_wakeUp(){...} void student_cloth(){...} void student_wash(){...} void student_eating(){...} void student_gotoSchool(){...} } ``` 而面向物件可以把學生進行抽象,所以這個例子就會變為 ```java class student(){ void wakeUp(){...} void cloth(){...} void wash(){...} void eating(){...} void gotoSchool(){...} } ``` 可以不用嚴格按照順序來執行每個動作。這是特點一。 * Java 摒棄了 C++ 中難以理解的多繼承、指標、記憶體管理等概念;不用手動管理物件的生命週期,這是特徵二。 * Java 語言具有功能強大和簡單易用兩個特徵,現在企業級開發,快速敏捷開發,尤其是各種框架的出現,使 Java 成為越來越火的一門語言。這是特點三。 * Java 是一門靜態語言,靜態語言指的就是在編譯期間就能夠知道資料型別的語言,在執行前就能夠檢查型別的正確性,一旦型別確定後就不能再更改,比如下面這個例子。 ```java public void foo() { int x = 5; boolean b = x; } ``` 靜態語言主要有 **Pascal, Perl, C/C++, JAVA, C#, Scala** 等。 相對應的,動態語言沒有任何特定的情況需要指定變數的型別,在執行時確定的資料型別。比如有**Lisp, Perl, Python、Ruby、JavaScript **等。 從設計的角度上來說,所有的語言都是設計用來把人類可讀的程式碼轉換為機器指令。動態語言是為了能夠讓程式設計師提高編碼效率,因此你可以使用更少的程式碼來實現功能。靜態語言設計是用來讓硬體執行的更高效,因此需要程式設計師編寫準確無誤的程式碼,以此來讓你的程式碼儘快的執行。從這個角度來說,靜態語言的執行效率要比動態語言高,速度更快。這是特點四。 * Java 具有平臺獨立性和可移植性 Java 有一句非常著名的口號: `Write once, run anywhere`,也就是一次編寫、到處執行。為什麼 Java 能夠吹出這種牛批的口號來?核心就是 `JVM`。我們知道,計算機應用程式和硬體之間會遮蔽很多細節,它們之間依靠作業系統完成排程和協調,大致的體系結構如下 ![YKwycV.png](https://s1.ax1x.com/2020/05/08/YKwycV.png) 那麼加上 Java 應用、JVM 的體系結構會變為如下
Java 是跨平臺的,已編譯的 Java 程式可以在任何帶有 JVM 的平臺上執行。你可以在 Windows 平臺下編寫程式碼,然後拿到 Linux 平臺下執行,該如何實現呢? 首先你需要在應用中編寫 Java 程式碼; 用 `Eclipse` 或者 `javac` 把 Java 程式碼編譯為 `.class` 檔案; 然後把你的 .class 檔案打成 `.jar` 檔案; 然後你的 .jar 檔案就能夠在 Windows 、Mac OS X、Linux 系統下運行了。不同的作業系統有不同的 JVM 實現,切換平臺時,不需要再次編譯你的 Java 程式碼了。這是特點五。 * Java 能夠容易實現多執行緒 Java 是一門高階語言,高階語言會對使用者遮蔽很多底層實現細節。比如 Java 是如何實現多執行緒的。從作業系統的角度來說,實現多執行緒的方式主要有下面這幾種 **在使用者空間中實現多執行緒** **在核心空間中實現多執行緒** **在使用者和核心空間中混合實現執行緒** 而我認為 Java 應該是在 `使用者空間` 實現的多執行緒,核心是感知不到 Java 存在多執行緒機制的。這是特點六。 * Java 具有高效能 我們編寫的程式碼,經過 javac 編譯器編譯稱為 `位元組碼(bytecode)`,經過 JVM 內嵌的直譯器將位元組碼轉換為機器程式碼,這是解釋執行,這種轉換過程效率較低。但是部分 JVM 的實現比如 `Hotspot JVM` 都提供了 `JIT(Just-In-Time)` 編譯器,也就是通常所說的動態編譯