Java程序設(shè)計與應(yīng)用第1章_第1頁
Java程序設(shè)計與應(yīng)用第1章_第2頁
Java程序設(shè)計與應(yīng)用第1章_第3頁
Java程序設(shè)計與應(yīng)用第1章_第4頁
Java程序設(shè)計與應(yīng)用第1章_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章

Java語言概述

學(xué)習(xí)目的:了解程序設(shè)計語言的發(fā)展歷史了解Java語言的特色和應(yīng)用背景了解Java虛擬機、Java的運行環(huán)境和Java編程語言開發(fā)環(huán)境初步掌握簡單Java程序的創(chuàng)建、編譯和運行學(xué)習(xí)重點面向?qū)ο蟮某绦蛟O(shè)計語言

Java虛擬機Java的運行環(huán)境Java程序的創(chuàng)建、編譯和運行2023/2/42第1章

Java語言概述

本章提要:

1.程序設(shè)計語言概述2.Java語言簡介3.

Java語言概述

4.簡單Java程序的創(chuàng)建、編譯及運行步驟2023/2/431.1程序設(shè)計語言概述

1.1.1計算機程序設(shè)計方法和語言隨著計算機硬件與通訊技術(shù)的發(fā)展,計算機應(yīng)用領(lǐng)域越來越廣泛,應(yīng)用規(guī)模也越來越大,程序設(shè)計不再是一、兩個程序員可完成的任務(wù),在這種情況下編寫程序不再片面追求高效率,而是綜合考慮程序的可靠性、可擴展性、可重用性和可理解性等因素。

程序設(shè)計方法是獨立于具體程序設(shè)計語言的一門技術(shù)。由于程序設(shè)計通常離不開程序設(shè)計語言作為工具,所以容易混淆程序設(shè)計方法與程序設(shè)計語言的概念。程序設(shè)計語言的設(shè)計目的主要是為了支持某種程序設(shè)計方法。2023/2/44早期的程序設(shè)計早期的高級程序設(shè)計語言有FORTROM、COBOL、BASIC等。這一時期由于追求程序的高效率,程序員過份依賴技巧與天份,不太注重程序的結(jié)構(gòu),。一個典型問題是程序中的控制隨意跳轉(zhuǎn),即不加限制地使用goto語句,這樣的程序?qū)﹂喿x者來說是難以理解的,程序員也難以修改程序。結(jié)構(gòu)化的程序設(shè)計隨著程序規(guī)模與復(fù)雜性的不斷增長,20世紀(jì)60年代誕生了結(jié)構(gòu)化程序設(shè)計方法。結(jié)構(gòu)化程序設(shè)計方法的主要技術(shù)是自頂向下、逐步求精,采用單入口/單輸出的控制結(jié)構(gòu)。這一程序設(shè)計方法的代表語言是Pascal、C、Ado等。2023/2/45

自頂向下是一種分解問題的技術(shù),與控制結(jié)構(gòu)有關(guān)。逐步求精指對結(jié)構(gòu)化程序進行分解,最終使其成為三種基本控制結(jié)構(gòu)的組合。結(jié)構(gòu)化程序設(shè)計的結(jié)果是一個程序最終由若干過程組成,每一個過程完成一個明確的功能。面向?qū)ο蟪绦蛟O(shè)計

雖然結(jié)構(gòu)化程序設(shè)計提高了軟件生產(chǎn)率和軟件質(zhì)量,但隨著程序規(guī)模與復(fù)雜性的增長,程序中的數(shù)據(jù)結(jié)構(gòu)變得與這些數(shù)據(jù)上的操作同樣重要。在大型結(jié)構(gòu)化程序中,一個數(shù)據(jù)結(jié)構(gòu)可能由許多個過程來處理,修改數(shù)據(jù)結(jié)構(gòu)將影響到所有相關(guān)的過程。在由幾百個過程組成的成千上萬行的結(jié)構(gòu)化程序中,這種情況變得相當(dāng)麻煩并且容易產(chǎn)生錯誤。

2023/2/46

20世紀(jì)80年代興起的面向?qū)ο蟪绦蛟O(shè)計方法在結(jié)構(gòu)化程序設(shè)計的基礎(chǔ)上提出了一種新的設(shè)計思路,最重要的改變是程序圍繞被操作的數(shù)據(jù)來設(shè)計,而不是圍繞操作本身。面向?qū)ο蟪绦蛟O(shè)計以類作為構(gòu)造程序的基本單位,具有封裝、數(shù)據(jù)抽象、繼承、多態(tài)化等特點。較有影響的面向?qū)ο蟪绦蛟O(shè)計語言有Simula、C++、Java等。Java語言是在C++語言基礎(chǔ)上發(fā)展起來的一種適合分布式計算的新型面向?qū)ο蟪绦蛟O(shè)計語言,也是目前推廣最快的程序設(shè)計語言。Java語言將面向?qū)ο?、平臺無關(guān)性、穩(wěn)定性與安全性、多線程等特征集于一身,為用戶提供了一個良好的程序設(shè)計環(huán)境,特別適合因特網(wǎng)的應(yīng)用開發(fā)。與當(dāng)前迅速發(fā)展的因特網(wǎng)應(yīng)用緊密結(jié)合是Java語言成功的關(guān)鍵所在。

2023/2/471.1.2

計算機程序設(shè)計方法和語言面向?qū)ο笈c面向過程的區(qū)別

早期的編程語言如Fortran語言和C語言基本上都是面向過程的語言,主要是采用數(shù)學(xué)語言方式編程的語言,其編程的主要思路專注于算法的實現(xiàn)。

傳統(tǒng)的面向過程的編程在描述問題時,由兩部分組成:數(shù)據(jù):描述實體狀態(tài)的數(shù)據(jù)結(jié)構(gòu);過程:操作這些狀態(tài)數(shù)據(jù)的程序和步驟。

面向過程編程的一個顯著特點是數(shù)據(jù)與程序的分開。數(shù)據(jù)是靜止的東西,不會自行變化,必須通過過程操作來改變數(shù)據(jù),因此,函數(shù)調(diào)用在面向過程編程中被大量使用。2023/2/48

針對程序結(jié)構(gòu)不清晰而無法維護改進的局面。面向?qū)ο缶幊烫岢隽艘环N全新的思路,讓計算機語言結(jié)構(gòu)像人類思維方式一樣簡單和清晰。面向?qū)ο蟮能浖_發(fā)中將世界上的事物均看成對象,任一對象有兩個特征:行為與狀態(tài)。每個對象可以通過自身的行為來改變自己的狀態(tài)。在面向?qū)ο蟮氖澜缰?,通過對象間的協(xié)作與交互來運作。由于將對象的操作封閉在對象內(nèi),外部要與對象進行交互只能通過給對象發(fā)送“消息”,這個消息實際上就是調(diào)用對象的某個行為方法,消息中還包括方法的參數(shù)。2023/2/49面向?qū)ο蟪绦蛟O(shè)計的特性封裝性

面向?qū)ο蟮牡谝粋€原則是把數(shù)據(jù)和該數(shù)據(jù)的操作都封裝在一個類中,比如說筆記本電腦就是一個類。筆記本電腦這個類有許多屬性,有些是靜態(tài)的(數(shù)據(jù)),比如:顯示屏的亮度,本身的重量;有些是動態(tài)的(對數(shù)據(jù)的操作),比如:可以按下組合鍵“ctrl+F4”或“ctrl+F5”來調(diào)整顯示器的亮度,可以卸掉它的外掛光驅(qū)來減輕它的重量。

對象是類的一個實例化結(jié)果,對象具有類所描述的所有的屬性以及方法。比如不同品牌、不同樣式的筆記本電腦之間的共同屬性就是它們所屬的類——筆記本電腦類的屬性。只不過類是抽象的東西,而對象是具體的,對象具有它隸屬類的所有屬性,包括靜態(tài)的和動態(tài)的。2023/2/410

每個對象都有自己的存儲空間,可容納其他對象,或者說通過封裝現(xiàn)有的對象,可以產(chǎn)生新型對象。因此,盡管對象的概念非常簡單,但是經(jīng)過封裝以后卻可以在程序中達到任意高的復(fù)雜程度。

每個對象都屬于某個類。根據(jù)語法,每個對象都是某個“類”的實例。一個類的最重要的特征就是“能將什么消息發(fā)給它?”,也就是類本身有哪些操作。面向?qū)ο蟪绦蛟O(shè)計就是設(shè)計好相關(guān)的類,類中有靜態(tài)的域,和動態(tài)的方法。繼承性繼承是在類、子類、以及對象之間自動地共享屬性和方法的機制。類的上層可以有父類、下層可以有子類,形成一種層次結(jié)構(gòu)。一個類將直接繼承其父類的屬性和行為2023/2/411,而且繼承還具有傳遞性,因此,它還將間接繼承所有祖先類的屬性和行為。

繼承最主要的優(yōu)點是重復(fù)使用性,通過繼承可以無限繁衍出更多的類,這樣的結(jié)果可讓軟件的開發(fā)加速,同時可達到程序共享的好處。通過繼承可以直接繼承系統(tǒng)提供的或他人寫作的類,并加以改寫,進而得到功能的不斷擴充。

繼承的另一個優(yōu)點是在于接口的一致性。當(dāng)超類繁衍出許多子類時,它的行為接口通過繼承可以傳給其所有子類。因此可以通過統(tǒng)一的行為接口去訪問不同的子類對象的方法,但不同子類中行為的具體實現(xiàn)可能時不一樣的。2023/2/412多態(tài)性多態(tài)是指在表示特定功能時,有多種不同的形態(tài)或?qū)崿F(xiàn)方法。常見的多態(tài)形式有兩種:方法的重載:即在同一個類中某個方法有多種形態(tài),其方法名相同,但參數(shù)不同,所以也稱參數(shù)多態(tài)。方法的覆蓋:在子類中重新定義一個與父類有相同形態(tài)的方法,這樣,在子類中將覆蓋從父類繼承來的那個方法。多態(tài)為描述客觀事物提供了極大的能動性。參數(shù)多態(tài)提供了方法的多種使用形態(tài),方便使用者的調(diào)用;而覆蓋多態(tài)則使得用戶可以用同樣的方式對待不同的對象,不同的對象可以用它們自己的方式響應(yīng)同一消息。用戶可以通過父類去引用子類的對象,執(zhí)行方法時則表現(xiàn)出每個子類對象各自的行為。

2023/2/413抽象性這里的抽象有兩個層次的含義,一是體現(xiàn)在類的層次設(shè)計中,高層類是底層類的抽象表述。類層次設(shè)計體現(xiàn)著不斷抽象的過程。第二體現(xiàn)在類與對象之間的關(guān)系上,類是一個抽象的概念,而對象是具體的。面向?qū)ο缶幊痰暮诵氖窃O(shè)計類,但實際運行操作的是對象。類是對象的模板,對象的創(chuàng)建是以類為基礎(chǔ)。同一類創(chuàng)建的對象具有共同的屬性,但屬性值不同。2023/2/4141.2程序設(shè)計語言概述Java語言有下面一些特點:簡單性Java語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指定的任務(wù),只需理解一些基本的概念,就可以用它編寫出適合于各種情況的應(yīng)用程序。Java略去了運算符重載、多重繼承等模糊的概念,并且通過實現(xiàn)自動垃圾收集大大簡化了程序設(shè)計者的內(nèi)存管理工作。另外,Java也適合于在小型機上運行。

1.2.1Java語言的特色2023/2/415面向?qū)ο驤ava語言的設(shè)計集中于對象及其接口,它提供了簡單的類機制以及動態(tài)的接口型。對象中封裝了它的狀態(tài)變量以及相應(yīng)的方法,實現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,并且通過繼承機制,子類可以使用父類所提供的方法,實現(xiàn)了代碼的復(fù)用。分布性

Java是面向網(wǎng)絡(luò)的語言。通過它提供的類庫可以處理TCP/IP協(xié)議,用戶可以通過URL地址在網(wǎng)絡(luò)上很方便地訪問其它對象。

2023/2/416魯棒性Java在編譯和運行程序時,都要對可能出現(xiàn)的問題進行檢查,以消除錯誤的產(chǎn)生。它提供自動垃圾收集來進行內(nèi)存管理,防止程序員在管理內(nèi)存時容易產(chǎn)生的錯誤。通過集成的面向?qū)ο蟮睦馓幚頇C制,在編譯時,Java提示出可能出現(xiàn)但未被處理的例外,幫助程序員正確地進行選擇以防止系統(tǒng)的崩潰。另外,Java在編譯時還可捕獲類型聲明中的許多常見錯誤,防止動態(tài)運行時不匹配問題的出現(xiàn)。2023/2/417安全性

用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須要防止病毒的入侵。Java不支持指針,一切對內(nèi)存的訪問都必須通過對象的實例變量來實現(xiàn),這樣就防止程序員使用“特洛伊”木馬等欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產(chǎn)生的錯誤。體系結(jié)構(gòu)中立

Java解釋器生成與體系結(jié)構(gòu)無關(guān)的字節(jié)碼指令,只要安裝了Java運行時系統(tǒng),Java程序就可在任意的處理器上運行。這些字節(jié)碼指令對應(yīng)于Java虛擬機中的表示,Java解釋器得到字節(jié)碼后,對它進行轉(zhuǎn)換,使之能夠在不同的平臺運行。

2023/2/418可移植性

與平臺無關(guān)的特性使Java程序可以方便地被移植到網(wǎng)絡(luò)上的不同機器。同時,Java的類庫中也實現(xiàn)了與不同平臺的接口,使這些類庫可以移植。另外,Java編譯器是由Java語言實現(xiàn)的,Java運行時系統(tǒng)由標(biāo)準(zhǔn)C實現(xiàn),這使得Java系統(tǒng)本身也具有可移植性。解釋執(zhí)行Java解釋器直接對Java字節(jié)碼進行解釋執(zhí)行。字節(jié)碼本身攜帶了許多編譯時信息,使得連接過程更加簡單。高性能和其它解釋執(zhí)行的語言如BASIC、TCL不同,Java字節(jié)碼的設(shè)計使之能很容易地直接轉(zhuǎn)換成對應(yīng)于特定CPU的機器碼,從而得到較高的性能。2023/2/419多線程

多線程機制使應(yīng)用程序能夠并行執(zhí)行,而且同步機制保證了對共享數(shù)據(jù)的正確操作。通過使用多線程,程序設(shè)計者可以分別用不同的線程完成特定的行為,而不需要采用全局的事件循環(huán)機制,這樣就很容易地實現(xiàn)網(wǎng)絡(luò)上的實時交互行為。動態(tài)性

Java的設(shè)計使它適合于一個不斷發(fā)展的環(huán)境。在類庫中可以自由地加入新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且Java通過接口來支持多重繼承,使之比嚴(yán)格的類繼承具有更靈活的方式和擴展性。2023/2/4201.2.2Java的應(yīng)用背景Java語言對軟件開發(fā)技術(shù)的影響Java語言將對未來軟件的開發(fā)產(chǎn)生影響,可從如下幾個方面考慮:軟件的需求分析:可將用戶的需求進行動態(tài)的、可視化描述,以提供設(shè)計者更加直觀的要求。而用戶的需求是各色各樣的,不受地區(qū)、行業(yè)、部門、愛好的影響,都可以用Java語言描述清楚。軟件的開發(fā)方法:由于Java語言的面向目標(biāo)的特性,所以完全可以用面向?qū)ο蟮募夹g(shù)與方法來開發(fā),這是符合最新的軟件開發(fā)規(guī)范要求的。

2023/2/421Java語言的動畫效果遠比GUI技術(shù)更加逼真,尤其是利用Internet提供的巨大動畫資源空間,可以共享全世界的動態(tài)畫面的資源。軟件最終產(chǎn)品:用Java語言開發(fā)的軟件可以具有可視化、可聽化、可操作化的交互、動畫與動作,要它停就停,要它繼續(xù)就繼續(xù),而這是在電影與電視播放過程中難以做到的。其它:使用Java語言對開發(fā)效益、開發(fā)價值都有比較明顯的影響。

2023/2/422Java語言的應(yīng)用前景

Java語言有著廣泛的應(yīng)用前景,大體上可以從以下幾個方面來考慮其應(yīng)用:所有面向?qū)ο蟮膽?yīng)用開發(fā),包括面向?qū)ο蟮氖录枋?、處理、綜合等。計算過程的可視化、可操作化的軟件的開發(fā)。動態(tài)畫面的設(shè)計,包括圖形圖像的調(diào)用。交互操作的設(shè)計(選擇交互、定向交互、控制流程等)。Internet的系統(tǒng)管理功能模塊的設(shè)計,包括Web頁面的動態(tài)設(shè)計、管理和交互操作設(shè)計等。Intranet(企業(yè)內(nèi)部網(wǎng))上的軟件開發(fā)(直接面向企業(yè)內(nèi)部用戶的軟件)。與各類數(shù)據(jù)庫連接查詢的SQL語句實現(xiàn)。其它應(yīng)用類型的程序。2023/2/4231.3程序設(shè)計語言簡介

用Java可寫兩種類型的程序:小程序(又叫JavaApplet)和應(yīng)用程序(Javaapplicatian)。

小程序是嵌入在HTML文檔種的Java程序;而Java應(yīng)用程序是從命令行運行的程序。對Java而言,Java小程序的大小和復(fù)雜性都沒有限制。由于WWW使小程序的發(fā)布十分便利,因此小程序更適合作為Internet上的應(yīng)用程序。

應(yīng)用程序(JavaApplication)是可以獨立運行的Java程序,有Java解釋器控制執(zhí)行。Applet則不能獨立運行,而是被嵌入到Web頁中,有Java兼容瀏覽器控制執(zhí)行。

2023/2/424

Java程序在編譯后生成的不是某種CPU的指令碼,而是Java語言特有的字節(jié)代碼。Java字節(jié)代碼運行在Java虛擬機上。

每一個操作系統(tǒng)的Java解釋器是不同的,但實現(xiàn)Java虛擬機時相同的,這就是Java語言與平臺無關(guān)的關(guān)鍵所在。Java虛擬機由五部分組成:一組指令集、一組寄存器、一個堆棧、一個無用內(nèi)存單元收集器、一個方法區(qū)域,這五個部分是Java虛擬機的邏輯抽象成分,不倚賴于任何實現(xiàn)技術(shù)或組織,但是它們的功能必須在真實機器上以某種來實現(xiàn)。Java虛擬機內(nèi)存區(qū)域不倚賴實現(xiàn)內(nèi)存的位置,也不要求連續(xù),但要求邏輯的長度固定。

1.3.1Java的虛擬機2023/2/425

Java虛擬機支持240多個字節(jié)代碼,每個字節(jié)代碼執(zhí)行一種基本的CPU運算。Java語言指令集相當(dāng)于Java語言程序的“匯編語言”,Java語言指令集的一條指令有一個操作碼、領(lǐng)個或多個操作數(shù)。操作數(shù)指定實施的操作,操作數(shù)是操作碼所需要的參數(shù)。Java語言的操作碼均為一個字節(jié)長,操作數(shù)沒有限制。

Java虛擬機的寄存器用于保存機器的運行狀態(tài)。Java虛擬機寄存器有四種:Java語言程序計數(shù)器;指向操作數(shù)棧頂端的指針;指向當(dāng)前執(zhí)行方法的執(zhí)行環(huán)境的指針;指向當(dāng)前執(zhí)行方法局部變量的區(qū)第一個變量的指針。Java虛擬機是用堆棧來處理數(shù)據(jù)傳遞的,它不定義或使用寄存器來傳遞或接受參數(shù)。目的是為了保證指令集的簡潔性和實現(xiàn)時的高效性。2023/2/426

Java虛擬機的堆棧有三個區(qū)域:局部變量區(qū)、執(zhí)行環(huán)境區(qū)和操作數(shù)區(qū)。Java虛擬機的堆棧是運行時刻動態(tài)分配的對象存儲區(qū)域。Java語言可以進行自動的無須內(nèi)存單元的收集,程序無須顯示釋放占有的內(nèi)存空間,無須內(nèi)存單元自動回收的算法倚賴于虛擬機最終實現(xiàn)的硬件環(huán)境。

Java虛擬機的方法區(qū)是編譯后的代碼區(qū)域,包含方法代碼、符號表等。

2023/2/4271.3.2Java的運行環(huán)境的配置Java不僅提供了一個豐富的語言和運行環(huán)境,而且還提供了一個免費的Java開發(fā)工具集(JavaDevelopersKits,簡稱JDK,也稱SDK)。編程人員和最終用戶可以利用這些工具來開發(fā)Java程序或調(diào)用Java內(nèi)容。

SUN的Java不僅提了一個豐富的語言和運行環(huán)境,而且還提了一個免費的Java開發(fā)工具集(SDK)。開發(fā)人員和最終用戶可以利用這個工具來開發(fā)Java程序。SDK簡單易學(xué),可以通過任何文本編輯器編寫Java源文件,然后在DOS狀況下利通過javac命令將Java源程序編譯成字節(jié)碼,通過Java命令來執(zhí)行編譯后的Java文件。

2023/2/428SDK的另一個顯著特點是隨著Java(J2EE、J2SE以及J2ME)版本的升級而升級。但它的缺點也是非常明顯的就是從事大規(guī)模企業(yè)級Java應(yīng)用開發(fā)非常困難,不能進行復(fù)雜的Java軟件開發(fā),也不利于團體協(xié)同開發(fā)。建立Java開發(fā)環(huán)境JDK開發(fā)環(huán)境中常用工具介紹在Java環(huán)境中的Java工具主要有:*appletviewer

小應(yīng)用程序瀏覽器*java解釋器*javac

編譯器*javah

頭文件生成器*javadocAPI

文檔生成器*javap

類文件反匯編器*sdbJava語言調(diào)試器2023/2/4291.3.1Java的虛擬機目前可供開發(fā)人員選擇得Java語言開發(fā)工具有很多,例如:Sun公司的SDK(命令行方式的)Java語言編輯器,用Java語言開發(fā)的圖形化界面的JavaWorkShop,Symmatec公司的VisualCafé,微軟公司的VisualJ++,Borland公司的JBuilder等等。開發(fā)人員選擇開發(fā)工具可以根據(jù)以下原則:開發(fā)界面是否友好,編譯效率是否高,是否有可視化的調(diào)試器,能否在瀏覽器中調(diào)試Java語言小程序,能否為使用者完成一

溫馨提示

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

評論

0/150

提交評論