java語言程序設(shè)計基礎(chǔ)篇(第八版)課件_完整版_第1頁
java語言程序設(shè)計基礎(chǔ)篇(第八版)課件_完整版_第2頁
java語言程序設(shè)計基礎(chǔ)篇(第八版)課件_完整版_第3頁
java語言程序設(shè)計基礎(chǔ)篇(第八版)課件_完整版_第4頁
java語言程序設(shè)計基礎(chǔ)篇(第八版)課件_完整版_第5頁
已閱讀5頁,還剩135頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、12 1. 了解計算機的組成及運行原理,了了解計算機的組成及運行原理,了解簡單機器語言程序的執(zhí)行特征;解簡單機器語言程序的執(zhí)行特征; 2. 理解匯編語言指令與機器語言指令理解匯編語言指令與機器語言指令的關(guān)系,理解高級語言與匯編語言的的關(guān)系,理解高級語言與匯編語言的關(guān)系,理解編譯程序或編譯器的功能關(guān)系,理解編譯程序或編譯器的功能與作用,初步理解掌握執(zhí)行程序的過與作用,初步理解掌握執(zhí)行程序的過程;程; 3. 了解高級語言發(fā)展簡史;初步理解了解高級語言發(fā)展簡史;初步理解操作系統(tǒng)、客戶操作系統(tǒng)、客戶/服務(wù)器以及服務(wù)器以及Internet和和WWW的基本概念。的基本概念。3 4. 了解了解Java語言的

2、特點,理解語言的特點,理解Java程序上機執(zhí)行過程,掌握簡單的程序上機執(zhí)行過程,掌握簡單的Java 應(yīng)用程序和應(yīng)用程序和Java applet程序的基本程序的基本結(jié)構(gòu),能上機執(zhí)行結(jié)構(gòu),能上機執(zhí)行Java 應(yīng)用程序和應(yīng)用程序和Java applet程序;能初步使用格式程序;能初步使用格式化輸入輸出語句?;斎胼敵稣Z句。 5. 初步理解對象和類的概念,掌握初步理解對象和類的概念,掌握表示它們的表示它們的UML圖形符號。圖形符號。 4 1.1計算機、計算機、Internet和和WWW 1.2 Java語言語言 1.3 Java程序程序 1.4 對象與統(tǒng)一建模語言對象與統(tǒng)一建模語言UML 5 1.2

3、Java語言語言 1.3 Java程序程序 1.4 對象與統(tǒng)一建模語言對象與統(tǒng)一建模語言UML6 Java語言是當今最為成功的計算機高級語言之語言是當今最為成功的計算機高級語言之一,是開發(fā)互聯(lián)網(wǎng)應(yīng)用的重要語言。它是富有一,是開發(fā)互聯(lián)網(wǎng)應(yīng)用的重要語言。它是富有經(jīng)驗的程序員或計算機及其相關(guān)專業(yè)的學生不經(jīng)驗的程序員或計算機及其相關(guān)專業(yè)的學生不能不學習的語言,事實上,它是許多各類學校能不學習的語言,事實上,它是許多各類學校計算機及其相關(guān)專業(yè)學生的一門課程。通過對計算機及其相關(guān)專業(yè)學生的一門課程。通過對它的學習,學生將熟悉面向?qū)ο蟪绦蛟O(shè)計基本它的學習,學生將熟悉面向?qū)ο蟪绦蛟O(shè)計基本知識和基本技能,并積累

4、面向?qū)ο缶幊探?jīng)驗,知識和基本技能,并積累面向?qū)ο缶幊探?jīng)驗,掌握當流行的應(yīng)用程序開發(fā)技術(shù),而這正是掌握當流行的應(yīng)用程序開發(fā)技術(shù),而這正是Java語言程序設(shè)計教材語言程序設(shè)計教材主要目的之一。本主要目的之一。本章是學習章是學習Java語言程序設(shè)計的一個簡短入門。語言程序設(shè)計的一個簡短入門。7 我們操作過計算機的人都知道,計算機我們操作過計算機的人都知道,計算機就是一種設(shè)備,它能讓我們進行文字處就是一種設(shè)備,它能讓我們進行文字處理,繪制圖形,玩游戲,聽音樂,制作理,繪制圖形,玩游戲,聽音樂,制作動畫,上網(wǎng)查詢信息和觀看網(wǎng)絡(luò)電影,動畫,上網(wǎng)查詢信息和觀看網(wǎng)絡(luò)電影,等等。這是從計算機應(yīng)用角度上的認識,等

5、等。這是從計算機應(yīng)用角度上的認識,實際上,計算機是能夠以比人快幾百萬實際上,計算機是能夠以比人快幾百萬甚至幾十億倍的速度執(zhí)行計算和邏輯判甚至幾十億倍的速度執(zhí)行計算和邏輯判斷的設(shè)備。這種說法可能讓人感到有點斷的設(shè)備。這種說法可能讓人感到有點神奇甚至迷惑神奇甚至迷惑:8 “文字處理、繪制圖形、玩游戲、制作動文字處理、繪制圖形、玩游戲、制作動畫、聽音樂、上網(wǎng)查詢信息和觀看網(wǎng)絡(luò)畫、聽音樂、上網(wǎng)查詢信息和觀看網(wǎng)絡(luò)電影等電影等”是怎樣與是怎樣與“執(zhí)行計算和邏輯判執(zhí)行計算和邏輯判斷斷”聯(lián)系起來呢?聯(lián)系起來呢? 實際上,我們使用的計算機即計算機系實際上,我們使用的計算機即計算機系統(tǒng)包含兩大部分,一是硬件本身,

6、它包統(tǒng)包含兩大部分,一是硬件本身,它包括鍵盤、鼠標、顯示器、磁盤和主機括鍵盤、鼠標、顯示器、磁盤和主機(箱)等;另一是軟件。(箱)等;另一是軟件。9 計算機硬件本身提供了執(zhí)行計算和邏輯計算機硬件本身提供了執(zhí)行計算和邏輯判斷的功能,這些功能表現(xiàn)為一組指令,判斷的功能,這些功能表現(xiàn)為一組指令,如加法指令、減法指令、取數(shù)指令、存如加法指令、減法指令、取數(shù)指令、存數(shù)指令、輸入指令和輸出指令以及邏輯數(shù)指令、輸入指令和輸出指令以及邏輯判斷類指令等;判斷類指令等; 而軟件是程序員利用計算機指令集,規(guī)而軟件是程序員利用計算機指令集,規(guī)劃組織完成令我們激動的玩游戲、聽音劃組織完成令我們激動的玩游戲、聽音樂和制作

7、動畫等計算機應(yīng)用的特定指令樂和制作動畫等計算機應(yīng)用的特定指令序列。軟件也可簡稱為程序。實際上,序列。軟件也可簡稱為程序。實際上,10 軟件與程序是不等價的,簡單說,軟件軟件與程序是不等價的,簡單說,軟件 = 程序程序 + 相關(guān)文檔資料。相關(guān)文檔資料。 計算機硬件是在程序的指令集控制下處計算機硬件是在程序的指令集控制下處理數(shù)據(jù)的。計算機程序控制著計算機,理數(shù)據(jù)的。計算機程序控制著計算機,使它按順序執(zhí)行一系列動作,這些動作使它按順序執(zhí)行一系列動作,這些動作是由程序員規(guī)劃的,并用指令描述的。是由程序員規(guī)劃的,并用指令描述的。 各種計算機無論外觀差別有多大,每一各種計算機無論外觀差別有多大,每一臺計算

8、機實際上都可劃分為五個邏輯單臺計算機實際上都可劃分為五個邏輯單元(或稱五大部分),如圖元(或稱五大部分),如圖1-1所示。所示。 11計算程序輸入設(shè)備輸出設(shè)備外存儲器外部設(shè)備接口內(nèi)存運算器控制器原始數(shù)據(jù)計算結(jié)果取數(shù)存數(shù)指令指令數(shù)據(jù)線控制信號線圖1-1計算機的基本組成12 1)輸入單元。輸入單元是計算機接收信)輸入單元。輸入單元是計算機接收信息的部分。它從各種輸入設(shè)備讀取信息息的部分。它從各種輸入設(shè)備讀取信息(數(shù)據(jù)和計算機程序),并把這些放置(數(shù)據(jù)和計算機程序),并把這些放置到其它處理信息的單元中。當今計算機到其它處理信息的單元中。當今計算機的大多數(shù)信息是通過鍵盤輸入的,但也的大多數(shù)信息是通過鍵

9、盤輸入的,但也逐漸出現(xiàn)使用其它許多輸入設(shè)備來進行逐漸出現(xiàn)使用其它許多輸入設(shè)備來進行信息輸入,如掃描儀、聲音輸入設(shè)備等。信息輸入,如掃描儀、聲音輸入設(shè)備等。13 2)輸出單元。輸出單元是計算機輸出信)輸出單元。輸出單元是計算機輸出信息的部分。它把計算機處理過的信息放息的部分。它把計算機處理過的信息放置到各種輸出設(shè)備中,從而使這些信息置到各種輸出設(shè)備中,從而使這些信息能夠被計算機外部使用。當今計算機的能夠被計算機外部使用。當今計算機的大多數(shù)信息是通過屏幕顯示和紙張打印大多數(shù)信息是通過屏幕顯示和紙張打印輸出的,同時也出現(xiàn)使用其它許多輸出輸出的,同時也出現(xiàn)使用其它許多輸出設(shè)備來進行信息輸出,如音箱等。

10、設(shè)備來進行信息輸出,如音箱等。14 3)內(nèi)存單元。內(nèi)存單元是計算機中存?。﹥?nèi)存單元。內(nèi)存單元是計算機中存取速度快、容量相對較少的儲存部分。它速度快、容量相對較少的儲存部分。它能夠記憶來自輸入單元的信息,因而能能夠記憶來自輸入單元的信息,因而能夠在需要的時候立即處理這些信息。內(nèi)夠在需要的時候立即處理這些信息。內(nèi)存單元還能夠記憶被處理過的信息,直存單元還能夠記憶被處理過的信息,直到輸出單元把信息放到輸出設(shè)備上。內(nèi)到輸出單元把信息放到輸出設(shè)備上。內(nèi)存單元經(jīng)常被稱為內(nèi)存或主存。內(nèi)存在存單元經(jīng)常被稱為內(nèi)存或主存。內(nèi)存在計算機電源關(guān)閉后將不起作用。計算機電源關(guān)閉后將不起作用。15 4)中央處理單元()中央

11、處理單元(CPU)。中央處理單)。中央處理單元是計算機中的元是計算機中的“加工加工”和和“管理管理”部部分。它負責執(zhí)行各種計算如加、減、乘、分。它負責執(zhí)行各種計算如加、減、乘、除等,負責邏輯判斷如比較內(nèi)存中的兩除等,負責邏輯判斷如比較內(nèi)存中的兩個數(shù)是否相等,這部分又稱為運算器。個數(shù)是否相等,這部分又稱為運算器。同時,它還是計算機的協(xié)調(diào)者,負責管同時,它還是計算機的協(xié)調(diào)者,負責管理對其它部分的操作,這部分又稱為控理對其它部分的操作,這部分又稱為控制器。在應(yīng)該把信息讀到內(nèi)存單元中時,制器。在應(yīng)該把信息讀到內(nèi)存單元中時,CPU就會向輸入設(shè)備發(fā)出請求;就會向輸入設(shè)備發(fā)出請求;16 當要把內(nèi)存中信息用于

12、計算時,當要把內(nèi)存中信息用于計算時,CPU會會把這種請求通知其內(nèi)部的運算器;當要把這種請求通知其內(nèi)部的運算器;當要把內(nèi)存中的信息發(fā)送給某個輸出設(shè)備時,把內(nèi)存中的信息發(fā)送給某個輸出設(shè)備時,CPU就會告訴輸出設(shè)備。就會告訴輸出設(shè)備。 5)二級存儲單元。二級存儲單元是計算)二級存儲單元。二級存儲單元是計算機中可以長久保存信息的高容量存儲部機中可以長久保存信息的高容量存儲部分。沒有被其它單元使用的程序和數(shù)據(jù)分。沒有被其它單元使用的程序和數(shù)據(jù)通常放在二級存儲單元中(如磁盤),通常放在二級存儲單元中(如磁盤),17 這些信息可能需要幾個小時、幾天、幾這些信息可能需要幾個小時、幾天、幾個月甚至幾年才會被使用

13、。二級存儲單個月甚至幾年才會被使用。二級存儲單元也稱為外存儲器,外存或稱為輔存。元也稱為外存儲器,外存或稱為輔存。 計算機運行的過程,就是順次執(zhí)行程序計算機運行的過程,就是順次執(zhí)行程序中指令的過程。計算機的指令以及運行中指令的過程。計算機的指令以及運行時數(shù)據(jù)都是采用二進制數(shù)表示的。下面時數(shù)據(jù)都是采用二進制數(shù)表示的。下面舉一個簡單的例子說明計算機的運行。舉一個簡單的例子說明計算機的運行。18 例例1.1 設(shè)計一個程序,其運行后接受用設(shè)計一個程序,其運行后接受用戶輸入的兩個數(shù),然后計算其平均值,戶輸入的兩個數(shù),然后計算其平均值,并輸出結(jié)果。并輸出結(jié)果。 解答:解決問題的過程為:解答:解決問題的過程

14、為:1)輸入兩個數(shù)存放于變量)輸入兩個數(shù)存放于變量a和和b中;中;2)計算)計算(a+b)/2,并將其結(jié)果存儲于變量,并將其結(jié)果存儲于變量X中;中;3)輸出)輸出X中的值;中的值; 19 當用計算機的指令來完成上述過程時,當用計算機的指令來完成上述過程時,需要考慮到計算機的具體特性,如計算需要考慮到計算機的具體特性,如計算機中沒有變量,而是用存儲單元來表示機中沒有變量,而是用存儲單元來表示等。完成上述過程的指令序列及其運行等。完成上述過程的指令序列及其運行時在內(nèi)存的存儲布局如圖時在內(nèi)存的存儲布局如圖1-2所示。所示。20圖1-2計算X=(a+b)/2指令序列(表示a)00000100內(nèi)存內(nèi)存單

15、元地址(表示b)00000101(表示X)0000011010000110 011000000000011110100010 00000100 000000000000100110000110 011000000000110010100010 00000101 000000000000111010100000 00000100 000000000001000100000000 11000000 00000101 000000000001010010110001 000000100001100011110110 111100010001101010100010 00000110 00000000

16、0001110010111010 11010101 00000011000111111110111000100010111101000010001121 例子說明:每例子說明:每8位二進制數(shù)稱為一個字節(jié)位二進制數(shù)稱為一個字節(jié)(Byte),每一條指令用若干個字節(jié)的),每一條指令用若干個字節(jié)的二進制代碼表示,并存儲到內(nèi)存單元中。二進制代碼表示,并存儲到內(nèi)存單元中。最小內(nèi)存單元為最小內(nèi)存單元為1個字節(jié),它必須用一個個字節(jié),它必須用一個編號來表示,這個編號稱為單元地址。編號來表示,這個編號稱為單元地址。在圖在圖1-2中我們并沒有把每個單元的地中我們并沒有把每個單元的地址標出來,只標出每條指令代碼存儲的

17、址標出來,只標出每條指令代碼存儲的起始單元的地址。起始單元的地址。22 圖圖1-2中的開始三個字節(jié)存儲單元分別中的開始三個字節(jié)存儲單元分別表示變量表示變量a、b和和X,用于存儲它們的值。,用于存儲它們的值。其它存儲單元用于存儲指令,這些指令其它存儲單元用于存儲指令,這些指令的含義解釋如下。的含義解釋如下。 第一條指令用第一條指令用2個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)“10000110 01100000”表示表示CPU從輸入設(shè)備讀進一從輸入設(shè)備讀進一個數(shù)(個數(shù)(a)并放置到寄存器)并放置到寄存器AL中。中。23 第二條指令用第二條指令用3個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)“10100010 00000100 0000000

18、0”表示表示CPU把寄把寄存器存器AL中數(shù)放置到內(nèi)存中地址編號為中數(shù)放置到內(nèi)存中地址編號為00000100的存儲單元(的存儲單元(1個字節(jié))中保個字節(jié))中保存。其中第存。其中第3個字節(jié)數(shù)據(jù)和第個字節(jié)數(shù)據(jù)和第2個字節(jié)數(shù)個字節(jié)數(shù)據(jù)合成一個據(jù)合成一個16位二進制數(shù)據(jù)(即位二進制數(shù)據(jù)(即00000000 00000100),表示存儲單),表示存儲單元(元(a)的地址。)的地址。24 第三條指令用第三條指令用2個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)“10000110 01100000”表示表示CPU從輸入設(shè)備讀進一從輸入設(shè)備讀進一個數(shù)(個數(shù)(b)并放置到寄存器)并放置到寄存器AL中;中; 第四條指令用第四條指令用3個字節(jié)

19、數(shù)據(jù)個字節(jié)數(shù)據(jù)“10100010 00000101 00000000”表示表示CPU把寄把寄存器存器AL中數(shù)放置到內(nèi)存中地址編號為中數(shù)放置到內(nèi)存中地址編號為00000101的存儲單元(的存儲單元(1個字節(jié))中保個字節(jié))中保存。其中第存。其中第3個字節(jié)數(shù)據(jù)和第個字節(jié)數(shù)據(jù)和第2個字節(jié)數(shù)個字節(jié)數(shù)據(jù)合成一個據(jù)合成一個16位二進制數(shù)據(jù)(即位二進制數(shù)據(jù)(即25 即即00000000 00000101),表示存儲),表示存儲單元(單元(b)的地址。)的地址。 第五條指令用第五條指令用3個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)“10100000 00000100 00000000”表示表示CPU從內(nèi)從內(nèi)存中地址編號為存中地址編號

20、為00000100的存儲單元的存儲單元讀進讀進1個字節(jié)數(shù)據(jù)(個字節(jié)數(shù)據(jù)(a)并放置到)并放置到AL寄存寄存器中。器中。26 第六條指令用第六條指令用4個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)“00000000 11000000 00000101 00000000”表示表示CPU把內(nèi)存中地址編號為把內(nèi)存中地址編號為00000101存儲單元的數(shù)據(jù)(存儲單元的數(shù)據(jù)(b)加到)加到AL寄存器中。寄存器中。 第七條指令用第七條指令用2個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)“10110001 00000010”表示表示CPU把數(shù)把數(shù)00000010即即2存儲到存儲到CL寄存器中。寄存器中。27 第八條指令用第八條指令用2個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)“

21、11110110 11110001”表示表示CPU用用CL中數(shù)支除中數(shù)支除AL寄寄存器中數(shù),其結(jié)果存儲在存器中數(shù),其結(jié)果存儲在AL寄存器中。寄存器中。 第九條指令用第九條指令用3個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)“10100010 00000110 00000000”表示表示CPU把寄把寄存器存器AL中數(shù)傳送到內(nèi)存中地址編號為中數(shù)傳送到內(nèi)存中地址編號為00000110的存儲單元(的存儲單元(X)中保存;)中保存;28 第十條指令用第十條指令用3個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)“10111010 11010101 00000011”表示表示CPU把數(shù)把數(shù)00000011 11010101即即03D5H(十(十六進制)存儲

22、到六進制)存儲到DX寄存器中;寄存器中;03D5H表表示顯示器的端口號。示顯示器的端口號。 第十一條指令用第十一條指令用1個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)“11101110”表示表示CPU把把AL寄存器中數(shù)寄存器中數(shù)送到送到DX寄存器所指向的端口連接的設(shè)備寄存器所指向的端口連接的設(shè)備即顯示器。即顯示器。29 第十二條指令用第十二條指令用1個字節(jié)數(shù)據(jù)個字節(jié)數(shù)據(jù)“11110100”表示表示CPU停止執(zhí)行指令。停止執(zhí)行指令。 計算機的指令集也稱為機器語言,上述計算機的指令集也稱為機器語言,上述的指令序列也稱為機器語言程序。注意,的指令序列也稱為機器語言程序。注意,該例子中用漢語描述計算過程時的每一該例子中用漢語

23、描述計算過程時的每一步,在用機器語言描述時需要多條指令。步,在用機器語言描述時需要多條指令。 30 機器語言就是計算機機器語言就是計算機CPU的指令集合,的指令集合,用它表示的計算程序即機器語言程序可用它表示的計算程序即機器語言程序可以直接由計算機執(zhí)行。我們所謂的使用以直接由計算機執(zhí)行。我們所謂的使用計算機,其它實質(zhì)就是通過使用機器語計算機,其它實質(zhì)就是通過使用機器語言來完成計算任務(wù),所以從這個角度上言來完成計算任務(wù),所以從這個角度上講,機器語言就是機器的講,機器語言就是機器的“代表代表”或或“化身化身”。 但機器語言程序難理解,因為機器指令但機器語言程序難理解,因為機器指令是用二進制數(shù)據(jù)表示

24、的。為了便于記憶、是用二進制數(shù)據(jù)表示的。為了便于記憶、31 理解機器指令或機器語言程序,人們用理解機器指令或機器語言程序,人們用字母符號來表示機器指令,這種字母符字母符號來表示機器指令,這種字母符號一般用一個有意義單詞的前幾個字母號一般用一個有意義單詞的前幾個字母組成,如組成,如ADD表示加法指令,表示加法指令,MOV表示表示傳送數(shù)據(jù)等等。符號化的指令稱為匯編傳送數(shù)據(jù)等等。符號化的指令稱為匯編指令,匯編指令的集合稱為匯編語言,指令,匯編指令的集合稱為匯編語言,用它表示的程序稱為匯編語言程序。用它表示的程序稱為匯編語言程序。 上節(jié)例子中的機器語言程序?qū)?yīng)的匯編上節(jié)例子中的機器語言程序?qū)?yīng)的匯編語

25、言程序為下表右部分所示:語言程序為下表右部分所示: 3233 將該匯編語言程序與上節(jié)機器語言程序比較,將該匯編語言程序與上節(jié)機器語言程序比較,我們可以發(fā)現(xiàn)每一條匯編語言指令與每一條我們可以發(fā)現(xiàn)每一條匯編語言指令與每一條機器指令基本上是一一對應(yīng)的。注意,該匯機器指令基本上是一一對應(yīng)的。注意,該匯編語言程序中,方括號中的數(shù)表示存儲單元編語言程序中,方括號中的數(shù)表示存儲單元地址,這個數(shù)前后加上方括號,表示以該數(shù)地址,這個數(shù)前后加上方括號,表示以該數(shù)為地址的存儲單元內(nèi)容,如第為地址的存儲單元內(nèi)容,如第2條匯編指令條匯編指令中,中,0100表示地址為表示地址為00000100的存儲單的存儲單元(元(a)

26、,寄存器中的數(shù)(),寄存器中的數(shù)(a)將被放置在)將被放置在其中;其中;34 不加方括號的數(shù)表示一般數(shù)據(jù),如第不加方括號的數(shù)表示一般數(shù)據(jù),如第10條匯編指令中,條匯編指令中,03D5H表示表示16進制數(shù)值進制數(shù)值03D5,將被放置到寄存器,將被放置到寄存器DX中。中。 匯編語言可以看作是機器語言的抽象,匯編語言可以看作是機器語言的抽象,事實上,它是通過符號化機器代碼來實事實上,它是通過符號化機器代碼來實現(xiàn)的?,F(xiàn)的。 然而用匯編語言表示人類社會的計算,然而用匯編語言表示人類社會的計算,也不大方便和直觀,如上例中的也不大方便和直觀,如上例中的35 “MOV DX 03D5H和和OUT DX AL”

27、是用于是用于“輸出數(shù)據(jù)輸出數(shù)據(jù)”,這兩者之間幾乎,這兩者之間幾乎看不出有什么直觀的聯(lián)系。于是出現(xiàn)了看不出有什么直觀的聯(lián)系。于是出現(xiàn)了所謂的高級語言作為對匯編語言的抽象,所謂的高級語言作為對匯編語言的抽象,使得指令更加使得指令更加“概念化概念化”,以便更接近,以便更接近我們的自然語言層次。用高級語言表示我們的自然語言層次。用高級語言表示的程序稱為高級語言程序。的程序稱為高級語言程序。Java語言就語言就是一種高級語言,用它寫出類似上述例是一種高級語言,用它寫出類似上述例子的程序是:子的程序是: 36 1 public class average 2 public static void main

28、(String args) 3 int a = 12, b = 34, c ; 4 c = (a+b)/2; 5 System.out.println(“The average is:”+c); 6 7 37 輸出結(jié)果:輸出結(jié)果: The average is: 23 程序說明:這里的程序說明:這里的Java程序由一個所謂程序由一個所謂的類構(gòu)成,第的類構(gòu)成,第1行是該類的開始,定義了行是該類的開始,定義了名為名為average的類,第的類,第7行以行以來結(jié)束該類來結(jié)束該類的定義。的定義。 類一般包含多個方法,類一般包含多個方法,average類只含一類只含一個名為個名為main的主方法,它由方

29、法頭部即的主方法,它由方法頭部即38 第第2行開始到第行開始到第6行結(jié)束,其包含三句即行結(jié)束,其包含三句即第第3、4、5行,其中第行,其中第3行聲明三個整型行聲明三個整型變量變量a、b和和c,分別存放兩個整數(shù)和它們,分別存放兩個整數(shù)和它們的平均值。第的平均值。第4行計算出行計算出a和和b的平均值,的平均值,并存放到(賦值給)變量并存放到(賦值給)變量c中。第中。第5行從行從屏幕上輸出文字屏幕上輸出文字“The average is:”和和結(jié)果即結(jié)果即c的值。的值。 注:上述注:上述java程序中,每行開始的數(shù)字程序中,每行開始的數(shù)字不是程序中的部分,它是作者加上的,不是程序中的部分,它是作者加

30、上的,39 用來表示行號,以便解釋每行程序時,用來表示行號,以便解釋每行程序時,指明是哪一行。指明是哪一行。 可見,高級語言要比匯編語言容易理解可見,高級語言要比匯編語言容易理解和記憶,事實上,它的抽象程度比匯編和記憶,事實上,它的抽象程度比匯編語言的高,并且更語言的高,并且更“接近接近”我們?nèi)祟惖奈覀內(nèi)祟惖恼Z言,如高級語言中的變量就是存儲單語言,如高級語言中的變量就是存儲單元的抽象。元的抽象。 注:這里每一句如注:這里每一句如c=(a+b)/2對應(yīng)了完成對應(yīng)了完成相應(yīng)計算的多條匯編語句。相應(yīng)計算的多條匯編語句。40 采用高級語言完成我們的計算任務(wù),確采用高級語言完成我們的計算任務(wù),確實要比機

31、器語言和匯編語言較自然和直實要比機器語言和匯編語言較自然和直觀。但是,計算機畢竟只能執(zhí)行機器指觀。但是,計算機畢竟只能執(zhí)行機器指令,所以,當我們編寫出高級語言程序令,所以,當我們編寫出高級語言程序后,還得將它轉(zhuǎn)換成對應(yīng)的機器語言程后,還得將它轉(zhuǎn)換成對應(yīng)的機器語言程序,才能使計算機去執(zhí)行計算。序,才能使計算機去執(zhí)行計算。 完成這種轉(zhuǎn)換的過程稱為程序翻譯。完成這種轉(zhuǎn)換的過程稱為程序翻譯。 程序翻譯猶如是現(xiàn)實中的語言翻譯,也程序翻譯猶如是現(xiàn)實中的語言翻譯,也41 有兩種方式即有兩種方式即“筆譯筆譯”和和“口譯口譯”。 筆譯就是一次完整地翻譯并記錄在紙上,筆譯就是一次完整地翻譯并記錄在紙上,然后可以復

32、印多份,同時供多人閱讀。然后可以復印多份,同時供多人閱讀。 而口譯是在實際場景中,邊講邊口頭翻而口譯是在實際場景中,邊講邊口頭翻譯,同樣的話說兩次,就得口譯兩次。譯,同樣的話說兩次,就得口譯兩次。顯然??谧g快,筆譯慢;口譯效率低,顯然。口譯快,筆譯慢;口譯效率低,筆譯效率高。筆譯效率高。42 對程序翻譯而言,其對程序翻譯而言,其“筆譯筆譯”稱為編譯,稱為編譯,其其“口譯口譯”稱為解釋,并且編譯和解釋稱為解釋,并且編譯和解釋工作是由專門的程序來完成的,這種翻工作是由專門的程序來完成的,這種翻譯程序分別稱為編譯程序和解釋程序。譯程序分別稱為編譯程序和解釋程序。 在編譯過程,被翻譯的語言程序也稱為在

33、編譯過程,被翻譯的語言程序也稱為源程序,相應(yīng)地翻譯結(jié)果稱為目標程序,源程序,相應(yīng)地翻譯結(jié)果稱為目標程序,并且當源程序是匯編語言程序是,對應(yīng)并且當源程序是匯編語言程序是,對應(yīng)的翻譯程序稱為匯編程序,如圖的翻譯程序稱為匯編程序,如圖1-3所所示。示。4344 注意:由上可以看出采用機器語言、匯注意:由上可以看出采用機器語言、匯編語言和高級語言分別表示同一個計算編語言和高級語言分別表示同一個計算時,雖然它們采用的命令或語句的數(shù)目時,雖然它們采用的命令或語句的數(shù)目不相同,特征也各異,但它們所包含的不相同,特征也各異,但它們所包含的內(nèi)在計算步驟或過程是相同的。在后面內(nèi)在計算步驟或過程是相同的。在后面我們

34、將把這種我們將把這種“計算步驟或過程計算步驟或過程”稱為稱為算法。算法。45 上個世紀上個世紀50年代早期,開始出現(xiàn)符號年代早期,開始出現(xiàn)符號化語言。格雷斯化語言。格雷斯.霍帕(霍帕(Grace Hopper)領(lǐng)導一個小組開發(fā)了)領(lǐng)導一個小組開發(fā)了A-0語語言,約翰言,約翰.巴克斯為巴克斯為IBM 701開發(fā)了加開發(fā)了加速代碼。速代碼。 1955年以后,開始出現(xiàn)一系列高級語年以后,開始出現(xiàn)一系列高級語言。言。1955年到年到1957年間,巴克斯領(lǐng)導年間,巴克斯領(lǐng)導一個組開發(fā)了公式翻譯語言一個組開發(fā)了公式翻譯語言46 ALGOrithmic Language,也即,也即ALGOL語言。該語言具有

35、幾個不同語言。該語言具有幾個不同的目標,即的目標,即 1、ALGOL語言的表示應(yīng)該接近標準語言的表示應(yīng)該接近標準數(shù)學。數(shù)學。 2、ALGOL語言對于描述算法應(yīng)該是語言對于描述算法應(yīng)該是有用的。有用的。 3、用、用ALGOL語言編寫的程序應(yīng)該可語言編寫的程序應(yīng)該可編譯為機器語言程序。編譯為機器語言程序。47 4、ALGOL語言不局限于某一計算機語言不局限于某一計算機的體系結(jié)構(gòu)。的體系結(jié)構(gòu)。 正是正是ALGOL語言,引入了傳遞名字語言,引入了傳遞名字參數(shù)的過程調(diào)用概念,也是為了定義參數(shù)的過程調(diào)用概念,也是為了定義ALGOL語言,約翰語言,約翰.巴克斯和彼特巴克斯和彼特.瑙爾給出了一種高級語言的語法

36、描述瑙爾給出了一種高級語言的語法描述方法,被稱為巴克斯方法,被稱為巴克斯-瑙爾范式,或瑙爾范式,或稱為稱為BNF。ALGOL語言后來又有了語言后來又有了兩次發(fā)展分別為兩次發(fā)展分別為ALGOL 60和和48 ALGOL 68。ALGOL語言并沒有在語言并沒有在美國得到推廣。美國得到推廣。 FORTRAN語言和語言和ALGOL語言都是語言都是基于數(shù)值計算的語言?;跀?shù)值計算的語言。 在早期語言的研究與開發(fā)的基礎(chǔ)上,在早期語言的研究與開發(fā)的基礎(chǔ)上,各種各樣的高級語言迅速發(fā)展起來,各種各樣的高級語言迅速發(fā)展起來,多達幾萬種,但得到廣泛應(yīng)用的也就多達幾萬種,但得到廣泛應(yīng)用的也就是十幾種。是十幾種。 49

37、5051 在前面,為了便于寫出完成計算的程序,在前面,為了便于寫出完成計算的程序,引入了高級語言,而用高級語言寫程序引入了高級語言,而用高級語言寫程序確實要比用匯編語言和機器語言來得方確實要比用匯編語言和機器語言來得方便和直觀,但由此也改變了我們運行程便和直觀,但由此也改變了我們運行程序的過程。序的過程。 一般地,運行一個高級語言程序需要經(jīng)一般地,運行一個高級語言程序需要經(jīng)歷三個步驟歷三個步驟: 第一就是要把源程序正確無誤地輸入到第一就是要把源程序正確無誤地輸入到計算機內(nèi)部,這一步稱為編輯源程序計算機內(nèi)部,這一步稱為編輯源程序52 并且是通過運行一個所謂的編輯程序并且是通過運行一個所謂的編輯程

38、序來完成的;來完成的; 第二步就是運行編譯程序,來把源程第二步就是運行編譯程序,來把源程序翻譯成目標程序;序翻譯成目標程序; 第三步就是運行該目標程序,完成特第三步就是運行該目標程序,完成特定的計算。定的計算。 如圖如圖1-4所示所示.53圖1-4 高級語言程序運行過程編輯器高級語言源程序機器語言程序(目標程序)源程序文本編譯器執(zhí)行目標程序第1步:編輯第2步:編譯第3步:運行54 我們運行程序時,并不是簡單地直接使用我們運行程序時,并不是簡單地直接使用計算機硬件來進行,而是通過運行在計算計算機硬件來進行,而是通過運行在計算機中的所謂操作系統(tǒng)來完成的。操作系統(tǒng)機中的所謂操作系統(tǒng)來完成的。操作系統(tǒng)

39、是計算機中最重要的程序,用來管理和控是計算機中最重要的程序,用來管理和控制 計 算 機 的 活 動 。 我 們 經(jīng) 常 使 用 的制 計 算 機 的 活 動 。 我 們 經(jīng) 常 使 用 的Windows 2000、XP或或ME,就是一種常,就是一種常用的操作系統(tǒng)。沒有操作系統(tǒng),應(yīng)用程序用的操作系統(tǒng)。沒有操作系統(tǒng),應(yīng)用程序(如字處理程序、(如字處理程序、Internet瀏覽器等)瀏覽器等)就不能運行。硬件、操作系統(tǒng)、應(yīng)用程序就不能運行。硬件、操作系統(tǒng)、應(yīng)用程序和用戶之間的關(guān)系如圖和用戶之間的關(guān)系如圖1-5所示。所示。5556 1. 控制和監(jiān)督系統(tǒng)的活動控制和監(jiān)督系統(tǒng)的活動操作系統(tǒng)要對系統(tǒng)的安全負

40、責,要確保沒操作系統(tǒng)要對系統(tǒng)的安全負責,要確保沒有權(quán)限的用戶不能訪問系統(tǒng),要確保系統(tǒng)有權(quán)限的用戶不能訪問系統(tǒng),要確保系統(tǒng)信息不受到破壞,要確保合法的操作得到信息不受到破壞,要確保合法的操作得到執(zhí)行,還要確保不同程序和用戶在同時使執(zhí)行,還要確保不同程序和用戶在同時使用計算機時不會相互干擾。操作系統(tǒng)不必用計算機時不會相互干擾。操作系統(tǒng)不必須提供一些基本功能,如,識別鍵盤輸入,須提供一些基本功能,如,識別鍵盤輸入,向顯示器發(fā)送輸出,保存文件和目錄,控向顯示器發(fā)送輸出,保存文件和目錄,控制硬盤驅(qū)動器和打印機等。制硬盤驅(qū)動器和打印機等。57 2. 分配系統(tǒng)資源分配系統(tǒng)資源 操作系統(tǒng)負責確定程序需要使用哪

41、些操作系統(tǒng)負責確定程序需要使用哪些計算機資源(計算機資源(CPU、內(nèi)存、磁盤、輸入和、內(nèi)存、磁盤、輸入和輸出設(shè)備),并進行資源分配以便運行程輸出設(shè)備),并進行資源分配以便運行程序;程序結(jié)束時還要回收資源。序;程序結(jié)束時還要回收資源。 3. 安排操作的順序安排操作的順序 操作系統(tǒng)還要負責安排和確定程序的操作系統(tǒng)還要負責安排和確定程序的執(zhí)行順序,以便有效地利用資源。為了增執(zhí)行順序,以便有效地利用資源。為了增強系統(tǒng)的性能,目前許多操作系統(tǒng)支持多強系統(tǒng)的性能,目前許多操作系統(tǒng)支持多道程序設(shè)計、多線程和多處理技術(shù)。道程序設(shè)計、多線程和多處理技術(shù)。58 多道程序設(shè)計允許多個程序同時運行,共多道程序設(shè)計允許

42、多個程序同時運行,共享享CPU。例如,。例如,Web瀏覽器下載文件的同瀏覽器下載文件的同時,我們可以用字處理程序來編輯文件。時,我們可以用字處理程序來編輯文件。 線程是程序中可同時運行的基本單。多線線程是程序中可同時運行的基本單。多線程允許一個程序內(nèi)部同時有多個程允許一個程序內(nèi)部同時有多個“子程序子程序”并發(fā)處理,即可以同時運行。例如,并發(fā)處理,即可以同時運行。例如,Word字處理程序允許用戶編輯文字的同字處理程序允許用戶編輯文字的同時將其保存到文件中。這里編輯和保存就時將其保存到文件中。這里編輯和保存就是同一個應(yīng)用程序中的兩個不同任務(wù)。是同一個應(yīng)用程序中的兩個不同任務(wù)。 多處理也稱為并行處理

43、,是指用兩個或多多處理也稱為并行處理,是指用兩個或多個處理器一起執(zhí)行同一任務(wù)。個處理器一起執(zhí)行同一任務(wù)。59 客戶客戶/服務(wù)器是網(wǎng)絡(luò)系統(tǒng)中應(yīng)用廣泛的服務(wù)器是網(wǎng)絡(luò)系統(tǒng)中應(yīng)用廣泛的一種技術(shù),它的用法有點混亂??蛻粢环N技術(shù),它的用法有點混亂??蛻?服務(wù)器有兩種用法服務(wù)器有兩種用法: 一種用來指網(wǎng)絡(luò)上作為提供信息共享一種用來指網(wǎng)絡(luò)上作為提供信息共享服務(wù)的計算機和用戶用來查詢?yōu)g覽網(wǎng)服務(wù)的計算機和用戶用來查詢?yōu)g覽網(wǎng)絡(luò)上信息的計算機,前者稱為服務(wù)器絡(luò)上信息的計算機,前者稱為服務(wù)器計算機或簡稱為服務(wù)器,后者稱為客計算機或簡稱為服務(wù)器,后者稱為客戶計算機或簡稱為客戶機。戶計算機或簡稱為客戶機。60 另一種用法是

44、指運行中的程序(進程另一種用法是指運行中的程序(進程或線程)之間的關(guān)系的處理方式,本或線程)之間的關(guān)系的處理方式,本書下面開始都是指的這種用法。書下面開始都是指的這種用法。 當一個程序在某一時刻向另一個程序當一個程序在某一時刻向另一個程序提出請求服務(wù)時,則提出請求服務(wù)的提出請求服務(wù)時,則提出請求服務(wù)的程序稱為客戶,而提供服務(wù)的程序稱程序稱為客戶,而提供服務(wù)的程序稱為服務(wù)器。例如,我們通過為服務(wù)器。例如,我們通過Internet瀏覽器上網(wǎng)查詢網(wǎng)絡(luò)信息時,它就是瀏覽器上網(wǎng)查詢網(wǎng)絡(luò)信息時,它就是一個客戶程序,而提供信息的一個客戶程序,而提供信息的Web就就是服務(wù)器。是服務(wù)器。61 客戶與服務(wù)器的關(guān)系

45、并不是一成不變客戶與服務(wù)器的關(guān)系并不是一成不變的,它們是一種相對的關(guān)系。在某一的,它們是一種相對的關(guān)系。在某一時刻是服務(wù)器的程序,在另一時刻就時刻是服務(wù)器的程序,在另一時刻就有可能成為客戶程序。有可能成為客戶程序。62 Internet互聯(lián)網(wǎng)絡(luò)是上世紀互聯(lián)網(wǎng)絡(luò)是上世紀60年代以年代以來,由美國國防部投資開發(fā)的。最初來,由美國國防部投資開發(fā)的。最初只是聯(lián)接大約十幾所大學和研究機構(gòu)只是聯(lián)接大約十幾所大學和研究機構(gòu)的主要計算機系統(tǒng)。今天,聯(lián)入的主要計算機系統(tǒng)。今天,聯(lián)入Internet的計算機數(shù)量已達幾億臺。的計算機數(shù)量已達幾億臺。 WWW(The World Wide Web)是)是Interne

46、t互聯(lián)網(wǎng)絡(luò)上一種最廣泛的應(yīng)互聯(lián)網(wǎng)絡(luò)上一種最廣泛的應(yīng)用技術(shù)或應(yīng)用形式,它使用技術(shù)或應(yīng)用形式,它使Internet互互聯(lián)網(wǎng)絡(luò)上的用戶從世界各地訪問多媒聯(lián)網(wǎng)絡(luò)上的用戶從世界各地訪問多媒63 體電子信息寶庫??梢允褂皿w電子信息寶庫??梢允褂肳WW查查找和查看所有主題的基于多媒體的文找和查看所有主題的基于多媒體的文檔,可以預定旅館的房間、購買飛機檔,可以預定旅館的房間、購買飛機票、注冊學習課程、下載各種資料、票、注冊學習課程、下載各種資料、與朋友聊天、觀看電影、收聽實況直與朋友聊天、觀看電影、收聽實況直播等等。播等等。64 1.3 Java程序程序 1.4 對象與統(tǒng)一建模語言對象與統(tǒng)一建模語言UML65

47、 Java是功能齊全的能用程序設(shè)計語言,是功能齊全的能用程序設(shè)計語言,可以開發(fā)可靠的、要求嚴格的應(yīng)用程可以開發(fā)可靠的、要求嚴格的應(yīng)用程序。序。Java不僅可以開發(fā)不僅可以開發(fā)Web應(yīng)用程序,應(yīng)用程序,而且還可以開發(fā)跨平臺的獨立應(yīng)用程而且還可以開發(fā)跨平臺的獨立應(yīng)用程序,這些程序用于服務(wù)器、臺式機、序,這些程序用于服務(wù)器、臺式機、移動設(shè)備等。移動設(shè)備等。66 Java具有許多誘人的特點。這些特點具有許多誘人的特點。這些特點正如正如Sun公司在公司在Java語言白皮書開始語言白皮書開始處所說,包括處所說,包括Java是簡單的、面向?qū)κ呛唵蔚?、面向?qū)ο蟮摹⒎植际降?、解釋型的、健壯的、象的、分布式的、?/p>

48、釋型的、健壯的、安全的、結(jié)構(gòu)中立的、可移植的、高安全的、結(jié)構(gòu)中立的、可移植的、高效的、多線程的以及動態(tài)的等。效的、多線程的以及動態(tài)的等。1. Java是簡單的是簡單的 任何一門計算機語言都不是簡單的,任何一門計算機語言都不是簡單的,67 因為他們都具有進行程序設(shè)計所需要因為他們都具有進行程序設(shè)計所需要的基本功能和基本成份,需要完成常的基本功能和基本成份,需要完成常規(guī)程序設(shè)計。但是與程序設(shè)計語言規(guī)程序設(shè)計。但是與程序設(shè)計語言C+相比,相比,Java要顯得簡單一些。要顯得簡單一些。Java部分地模仿了部分地模仿了C+,但是進行了,但是進行了極大的簡化和改進。例如,極大的簡化和改進。例如,C+中的中

49、的指針和多重繼續(xù)常常使程序復雜化,指針和多重繼續(xù)常常使程序復雜化,而而Java丟棄了指針,并使用一種所謂丟棄了指針,并使用一種所謂接口(接口(interface)的簡單概念代替了)的簡單概念代替了多重繼續(xù)。多重繼續(xù)。68 C+要求程序員自己去進行內(nèi)存的分要求程序員自己去進行內(nèi)存的分配與回收,而配與回收,而Java采用自動內(nèi)存分配采用自動內(nèi)存分配與回收。另外,與回收。另外,Java比比C+具有更少具有更少的語言概念,而功能卻更強大。的語言概念,而功能卻更強大。2. Java是面向?qū)ο蟮氖敲嫦驅(qū)ο蟮?Java一開始就設(shè)計為完全面向?qū)ο蟮?,一開始就設(shè)計為完全面向?qū)ο蟮?,即即Java天生就是面向?qū)ο蟮?/p>

50、。而許多天生就是面向?qū)ο蟮?。而許多面向?qū)ο笳Z言如面向?qū)ο笳Z言如C+,包含了面向過,包含了面向過程的特征。程的特征。69 所謂面向過程,指程序是按照問題解所謂面向過程,指程序是按照問題解決的既定過程設(shè)計而的,它在的運行決的既定過程設(shè)計而的,它在的運行過程完全符合問題解決的既定過程,過程完全符合問題解決的既定過程,這就要求設(shè)計過程中必須按照(規(guī)定這就要求設(shè)計過程中必須按照(規(guī)定的)解決問題過程來進行,即通過把的)解決問題過程來進行,即通過把問題分解為若干小問題來進行求解,問題分解為若干小問題來進行求解,也即進行所謂的功能分解。這樣,設(shè)也即進行所謂的功能分解。這樣,設(shè)計出來的程序是由一些功能模塊構(gòu)成

51、計出來的程序是由一些功能模塊構(gòu)成70 (這種(這種“功能模塊功能模塊”在在C語言中稱為語言中稱為函數(shù)),如圖函數(shù)),如圖1-5所示,該程序是用所示,該程序是用于計算規(guī)則圖形面積,它被分解為四于計算規(guī)則圖形面積,它被分解為四個功能模塊。個功能模塊。71 而面向?qū)ο笫侵赋绦蚴怯蓪ο髽?gòu)成的,而面向?qū)ο笫侵赋绦蚴怯蓪ο髽?gòu)成的,這種對象是問題中事物的抽象,它包含這種對象是問題中事物的抽象,它包含數(shù)據(jù)字段和方法;數(shù)據(jù)字段和方法分別數(shù)據(jù)字段和方法;數(shù)據(jù)字段和方法分別用來表征事物的屬性和行為。面向?qū)ο笥脕肀碚魇挛锏膶傩院托袨?。面向?qū)ο筮€提供了對象的繼承和多態(tài)性,這用來還提供了對象的繼承和多態(tài)性,這用來反映事物

52、之間的關(guān)系。面向?qū)ο笫菍ΜF(xiàn)反映事物之間的關(guān)系。面向?qū)ο笫菍ΜF(xiàn)實世界中事物及其關(guān)系的一種自然的反實世界中事物及其關(guān)系的一種自然的反映,因而,它便于反映現(xiàn)實世界的變化,映,因而,它便于反映現(xiàn)實世界的變化,并且對付這種變化付出的代價要比面向并且對付這種變化付出的代價要比面向過程技術(shù)小得多。過程技術(shù)小得多。72 作為面向?qū)ο蟮淖鳛槊嫦驅(qū)ο蟮腏ava,它提供了封裝、,它提供了封裝、繼承和多態(tài)性,這使得它具有了極大的繼承和多態(tài)性,這使得它具有了極大的靈活性、模塊性、透明性和可重用性。靈活性、模塊性、透明性和可重用性。其中的重用性使我們可以重用代碼。其中的重用性使我們可以重用代碼。3. Java是分布式的是

53、分布式的 分布式計算是網(wǎng)絡(luò)上的一種高級應(yīng)用形分布式計算是網(wǎng)絡(luò)上的一種高級應(yīng)用形式,它使網(wǎng)絡(luò)上的多臺計算機整合為一式,它使網(wǎng)絡(luò)上的多臺計算機整合為一個整體(好象一臺計算機一樣),個整體(好象一臺計算機一樣),73 透明地完成用戶提交的工作。透明地完成用戶提交的工作。Java的的設(shè)計使分布式計算變得容易起來,由設(shè)計使分布式計算變得容易起來,由于于Java一開始就設(shè)計了網(wǎng)絡(luò)工作能力,一開始就設(shè)計了網(wǎng)絡(luò)工作能力,因而編寫網(wǎng)絡(luò)程序如同在文件中存取因而編寫網(wǎng)絡(luò)程序如同在文件中存取數(shù)一起。數(shù)一起。4. Java是解釋型的是解釋型的 Java程序運行前需要編譯成一種所謂程序運行前需要編譯成一種所謂Java虛擬

54、機(虛擬機(Java Virtual Machine,JVM)編碼,這種編碼稱)編碼,這種編碼稱74 為字節(jié)碼(為字節(jié)碼(bytecode)。字節(jié)碼獨立)。字節(jié)碼獨立于具體的計算機,運行時需要于具體的計算機,運行時需要Java解解釋器來把它轉(zhuǎn)換成本地計算機代碼予釋器來把它轉(zhuǎn)換成本地計算機代碼予以完成,所以它能在任何具有以完成,所以它能在任何具有Java解解釋器的機器上運行。如圖釋器的機器上運行。如圖1-6所示是所示是Java程序、程序、Java字節(jié)碼、字節(jié)碼、Java虛擬虛擬機和計算機的關(guān)系。機和計算機的關(guān)系。 7576 大多數(shù)高級語言的編譯器都把程序編大多數(shù)高級語言的編譯器都把程序編譯成機器

55、代碼,這種機器代碼只能在譯成機器代碼,這種機器代碼只能在本地計算機上運行,如果要在其他計本地計算機上運行,如果要在其他計算機上運行,還得在這些計算機上重算機上運行,還得在這些計算機上重新編譯。使用新編譯。使用Java,只需要編譯一次,只需要編譯一次,其編譯而成的字節(jié)碼即可以在任何具其編譯而成的字節(jié)碼即可以在任何具有有Java解釋器的平臺上運行。解釋器的平臺上運行。5. Java是健壯的是健壯的 任何一門程序設(shè)計語言都不能是絕對任何一門程序設(shè)計語言都不能是絕對77 可靠的,其編制的程序都有可能發(fā)生可靠的,其編制的程序都有可能發(fā)生這樣或那樣的錯誤。所謂健壯的就指這樣或那樣的錯誤。所謂健壯的就指避免

56、錯誤和處理錯誤的能力較強。避免錯誤和處理錯誤的能力較強。Java丟棄了其他語言中容易引起錯誤丟棄了其他語言中容易引起錯誤的某些程序概念類型,例如,它不支的某些程序概念類型,例如,它不支持指針,從而避免了重寫內(nèi)存而造成持指針,從而避免了重寫內(nèi)存而造成的數(shù)據(jù)破壞的可能性。另一方面,的數(shù)據(jù)破壞的可能性。另一方面,Java具有實時異常處理的功能,該特具有實時異常處理的功能,該特點有助于提高程序的健壯性。點有助于提高程序的健壯性。Java強強78 制程序員編寫處理異常的代碼,所以制程序員編寫處理異常的代碼,所以它能夠捕獲并響應(yīng)意外情況,從而發(fā)它能夠捕獲并響應(yīng)意外情況,從而發(fā)生實時錯誤時程序能夠繼續(xù)正常執(zhí)

57、行生實時錯誤時程序能夠繼續(xù)正常執(zhí)行錯誤處理代碼,穩(wěn)妥地結(jié)束。錯誤處理代碼,穩(wěn)妥地結(jié)束。5. Java是安全的是安全的 Java一開始就是用于一開始就是用于Internet程序設(shè)程序設(shè)計而出現(xiàn)的,網(wǎng)絡(luò)和分布式環(huán)境是它計而出現(xiàn)的,網(wǎng)絡(luò)和分布式環(huán)境是它的主要用途之一。所以,的主要用途之一。所以,Java在安全在安全上進行了精心的考慮,它執(zhí)行多層安上進行了精心的考慮,它執(zhí)行多層安79 全機制用以保護系統(tǒng)不受到惡意地破全機制用以保護系統(tǒng)不受到惡意地破壞,從而使用戶在下載并運行一個壞,從而使用戶在下載并運行一個Java applet(一種特殊的(一種特殊的Java程序,程序,它需要下載到本地計算機它需要下

58、載到本地計算機Internet瀏瀏覽器中運行)時,它不會損害本地的覽器中運行)時,它不會損害本地的系統(tǒng)。安全性的前提是什么也不能信系統(tǒng)。安全性的前提是什么也不能信任。任。6. Java是結(jié)構(gòu)中立的是結(jié)構(gòu)中立的 Java是解釋型的,這一特點使得是解釋型的,這一特點使得Java80 成為結(jié)構(gòu)中立的(成為結(jié)構(gòu)中立的(architecture-neutral),即),即Java是平臺無關(guān)的。是平臺無關(guān)的。得用得用Java虛擬機,我們可編寫任何平虛擬機,我們可編寫任何平臺上都能運行的程序。臺上都能運行的程序。7. Java是可移植的是可移植的 Java是結(jié)構(gòu)中立的,因而是結(jié)構(gòu)中立的,因而Java程序是程

59、序是可移埴的,它不必重新編譯就能在任可移埴的,它不必重新編譯就能在任何平臺上運行。何平臺上運行。Java在不同平臺上運在不同平臺上運行時,用戶不用擔心數(shù)值的最大長度行時,用戶不用擔心數(shù)值的最大長度81 和精度會發(fā)生變化。和精度會發(fā)生變化。8. Java是高效的是高效的9. Java是多線程的是多線程的 多線程使得一個程序可以同時執(zhí)行多多線程使得一個程序可以同時執(zhí)行多個任務(wù)成為可能,因而它被廣泛應(yīng)用個任務(wù)成為可能,因而它被廣泛應(yīng)用于圖形用戶界面(于圖形用戶界面(Graphics User Interface,GUI)和網(wǎng)絡(luò)程序設(shè)計)和網(wǎng)絡(luò)程序設(shè)計中。在中。在GUI程序設(shè)計中,有許多任務(wù)程序設(shè)計中

60、,有許多任務(wù)需要同時進行,如播放音樂、瀏覽網(wǎng)需要同時進行,如播放音樂、瀏覽網(wǎng)82 頁等。在網(wǎng)絡(luò)程序設(shè)計中,一個服務(wù)頁等。在網(wǎng)絡(luò)程序設(shè)計中,一個服務(wù)器可能同時為多個客戶服務(wù),如多臺器可能同時為多個客戶服務(wù),如多臺計算機上的瀏覽器同時向一臺計算機上的瀏覽器同時向一臺WWW服務(wù)器請求網(wǎng)頁信息時,就需要服務(wù)服務(wù)器請求網(wǎng)頁信息時,就需要服務(wù)器有多個線程分別響應(yīng)它們的要求。器有多個線程分別響應(yīng)它們的要求。一般而言,使用多線程必須調(diào)用操作一般而言,使用多線程必須調(diào)用操作系統(tǒng)特定的過程才能實現(xiàn),但系統(tǒng)特定的過程才能實現(xiàn),但Java語語言卻平衡地集成了多線程程序設(shè)計技言卻平衡地集成了多線程程序設(shè)計技術(shù),簡化了程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論