1. 程式人生 > >我的JAVA筆記001----JAVA語言概述和開發環境

我的JAVA筆記001----JAVA語言概述和開發環境

我的JAVA筆記

----------------------------------第一章JAVA語言概述和開發環境
----------------------------------2018.11.14

1. 編譯型語言和解釋型語言

要執行一個機器,我們就要給他一個指令,但是我們給的指令,機器能懂嗎?明顯是不的,我們給的指令就是源程式,而機器能識別的語言是機器語言。在兩者之間,我們就有兩種方式來使得機器理解我們的語言。
在這裡插入圖片描述

編譯型:

優勢:效能更快,可以獨立執行
缺點:集中翻譯成哪個平臺(作業系統)的指令,將只能在該平臺上執行
e.g C/C++

解釋型:

優勢:執行時可以針對不同平臺進行不同解釋,跨平臺
缺點:效能略差,不能脫離直譯器獨立執行
e.g Ruby,Python

2. JAVA執行機制

那麼Java是屬於哪一種呢?
準確來說,Java是不完全編譯的,因為它編譯的結果並不是機器指令,而是位元組碼檔案(Byte,計算機中我們以二進位制儲存,8bit=1Byte)
在這裡插入圖片描述

JVM作用:

Java編譯器將Java原始碼編譯成位元組碼檔案*.class(不徹底的編譯,並未編譯成機器指令)。JVM(Java Virtual Machine,可以執行Java位元組碼檔案的虛擬計算機,不同平臺上的JVM不同)將位元組碼檔案解釋成對應平臺的機器指令,這就是Java跨平臺的原因。
舉一個簡單的例子來說,有兩支不同的筆,但需要把一個筆帽套在兩支不同的筆上,那麼我們可以為這兩支筆分別提供一個轉換器。其中,我們可以把筆帽認為是Java位元組碼檔案,轉換器就對應JVM,兩支不同的筆就是兩個不同的作業系統。或者,再比如手機的充電介面有micro-USB(梯形的那種)、Type C(支援正反盲插的)、Lightning(蘋果的),資料線就像是我們的“轉換器”,一端總是Type A,另一端就是不同的手機介面。

JVM細節

類載入機制:反射
記憶體管理、GC
JVM程式碼解析、處理引擎
暫時不做了解,後續會學習到

3. JDK、JRE和JVM

JDK(Java Development Kit),包括Java編譯器、Java執行時環境、常用的Java類庫。(我們常說的SDK就是Software Development Kit)
JRE(Java Runtime Environment,執行時環境),包括JVM、各種基礎類庫和Java類庫。
三者的關係,簡單來說就是JDK包括JRE,JRE包括JVM。

4. Java環境變數的配置

(1)PATH環境變數

指定可執行程式的位置

編譯和執行Java程式有兩步:
首先,將原始檔編譯成位元組碼。
然後,解釋執行位元組碼程式。

以上兩個步驟所需的命令分別為javac和java。
安裝完JDK之後,在windows系統下,執行cmd,在命令列視窗依次輸入兩個指令,此時我們暫時還沒有配置PATH環境變數,視窗將輸出不是內部或外部命令,也不是可執行的程式或批處理檔案。其實我們安裝之後計算機裡面是有這兩個命令的(在bin目錄下),只是計算機現在不知道它在哪裡,所以我們可以新建一個PATH的使用者變數(系統變數和使用者變數沒有多大區別,只是使用者變數針對的是當前使用者,系統變數是對所有使用者有效),將bin路徑放到該變數的值中。

(2)JAVA_HOME

配置JDK的目錄

重灌系統後,無需重新下載JDK,但是由於登錄檔等等其他檔案已經沒有了,所以我們需要讓計算機知道上哪裡去找Java。
在Windows系統下,%JAVA_HOME%表示變數
在Mac系統下,$ JAVA_HOME$ 表示變數
我們就可以設定PATH的值為%JAVA_HOME%\bin($ JAVA_HOME$\bin),到時候僅修改JAVA_HOME的值就可以了。

(3)CLASSPATH環境變數

指定到哪裡去找執行時需要用到的類程式碼(位元組碼)

在CLASSPATH設定的路徑下搜尋Java類。
可設可不設,不設定的話,預設在當前路徑下搜尋Java類。

學習一些基本的命令列

常用的命令
windows/linux
cd :轉向哪個路徑
dir/list:列出當前路徑下的目錄
mkdir/md:建立新檔案
常用的目錄修飾符
. :當前目錄
… :上級目錄
\ :根目錄