版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、奧鵬遠程教育中心 高校名稱:福建師范大學(xué)課程名稱:java程序設(shè)計目錄第一章 java語言概述 課堂筆記3第一章 java語言概述 faq8第一章 java語言概述 關(guān)鍵詞匯9第一章 java語言概述 拓展資源10第二章 java語言基礎(chǔ) 課堂筆記12第二章 java語言基礎(chǔ) faq19第二章 java語言基礎(chǔ) 關(guān)鍵詞匯20第二章 java語言基礎(chǔ) 拓展資源21第三章 面向?qū)ο蠹夹g(shù)基礎(chǔ) 課堂筆記23第三章 面向?qū)ο蠹夹g(shù)基礎(chǔ) faq25第三章 面向?qū)ο蠹夹g(shù)基礎(chǔ) 關(guān)鍵詞匯26第三章 面向?qū)ο蠹夹g(shù)基礎(chǔ) 拓展資源27第四章 java語言中的面向?qū)ο筇匦?課堂筆記30第四章 java語言中的面向?qū)ο筇匦?/p>
2、 faq38第四章 java語言中的面向?qū)ο筇匦?關(guān)鍵詞匯39第四章 java語言中的面向?qū)ο筇匦?拓展資源40第五章 數(shù)組 課堂筆記42第五章 數(shù)組 faq46第五章 數(shù)組 關(guān)鍵詞匯47第五章 數(shù)組 拓展資源47第六章 字符串處理 課堂筆記49第六章 字符串處理 faq52第六章 字符串處理 關(guān)鍵詞匯54第六章 字符串處理 拓展資源54第七章 輸入輸出處理 課堂筆記57第七章 輸入輸出處理 faq63第七章 輸入輸出處理 關(guān)鍵詞匯65第七章 輸入輸出處理 拓展資源65第八章 例外處理 課堂筆記75第八章 例外處理 faq80第八章 例外處理 關(guān)鍵詞匯82第八章 例外處理 拓展資源83第九章
3、多線程 課堂筆記86第九章 多線程 faq102第九章 多線程 關(guān)鍵詞匯104第九章 多線程 拓展資源105第十章 圖形用戶界面 課堂筆記108第十章 圖形用戶界面 faq116第十章 圖形用戶界面 關(guān)鍵詞匯117第十章 圖形用戶界面 拓展資源117第十一章 java applet 課堂筆記127第十一章 java applet faq134第十一章 java applet 關(guān)鍵詞匯136第十一章 java applet 拓展資源136第十二章 java網(wǎng)絡(luò)編程 課堂筆記138第十二章 java網(wǎng)絡(luò)編程 faq146第十二章 java網(wǎng)絡(luò)編程 關(guān)鍵詞匯147第十二章 java網(wǎng)絡(luò)編程 拓展資源
4、148第一章 java語言概述 課堂筆記主要知識點掌握程度 了解java語言的發(fā)展歷程,java語言的基本特點。掌握掌握java虛擬機和字節(jié)碼的概念,理解java程序的內(nèi)在運行原理,掌握java程序的編譯環(huán)境、編譯方法和編譯運行的常見工具。 知識點整理 一、java語言的特點1、簡單 java語言是一種面向?qū)ο蟮恼Z言,它通過提供最基本的方法來完成指定的任務(wù),只需理解一些基本的概念,就可以用它編寫出適合于各種情況的應(yīng)用程序。java略去了運算符重載、多重繼承等模糊的概念,并且通過實現(xiàn)自動垃圾收集大大簡化了程序設(shè)計者的內(nèi)存管理工作。另外,java也適合于在小型機上運行,它的基本解釋器及類的支持只有
5、40kb左右,加上標(biāo)準(zhǔn)類庫和線程的支持也只有215kb左右。2、面向?qū)ο?java語言的設(shè)計集中于對象及其接口,它提供了簡單的類機制以及動態(tài)的接口模型。對象中封裝了它的狀態(tài)變量以及相應(yīng)的方法,實現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,并且通過繼承機制,子類可以使用父類所提供的方法,實現(xiàn)了代碼的復(fù)用。3、分布性 java 是面向網(wǎng)絡(luò)的語言 。通過它提供的類庫可以處理tcp/ip協(xié)議,用戶可以通過url地址在網(wǎng)絡(luò)上很方便地訪問其他對象。 4、魯棒性 java在編譯和運行程序時,都要對可能出現(xiàn)的問題進行檢查,以消除錯誤。它提供自動垃圾收集來進行內(nèi)存管理,防止程序員在管理內(nèi)存時容易產(chǎn)生的錯誤
6、。通過集成的、面向?qū)ο蟮睦馓幚頇C制,在編譯時,java提示出可能出現(xiàn)但未被處理的例外,幫助程序員正確地進行選擇以防止系統(tǒng)的崩潰。另外,java在編譯時還可捕獲類型聲明中的許多常見錯誤,防止動態(tài)運行時不匹配問題的出現(xiàn)。 5.安全性用于網(wǎng)絡(luò)、分布環(huán)境下的java必須要防止病毒的入侵,java不支持指針,一切對內(nèi)存的訪問都必須通過對象的實例變量來實現(xiàn),這樣就防止了程序員使用“ 特洛伊 ”木馬等欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產(chǎn)生的錯誤。6.體系結(jié)構(gòu)中立java解釋器生成與體系結(jié)構(gòu)無關(guān)的字節(jié)碼指令,只要安裝了java運行時系統(tǒng),java程序就可在任意的處理器上運行。這些字節(jié)碼指
7、令對應(yīng)于java虛擬機中的表示,java解釋器得到字節(jié)碼后,對它進行轉(zhuǎn)換,使之能夠在不同的平臺運行。7.可移植性與平臺無關(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)本身也具有可移植性。8.解釋執(zhí)行java解釋器直接對java字節(jié)碼進行解釋執(zhí)行。字節(jié)碼本身攜帶了許多編譯時信息,使得連接過程更加簡單。9.高性能和其他解釋執(zhí)行的語言如basic不同 ,java字節(jié)碼的設(shè)計使之能很容易地直接轉(zhuǎn)換成對應(yīng)于特定cpu的機器碼,從而得
8、到較高的性能。10.多線程多線程機制使應(yīng)用程序能夠并行執(zhí)行,而且同步機制保證了對共享數(shù)據(jù)的正確操作。通過使用多線程,程序設(shè)計者可以分別用不同的線程完成特定的行為,而不需要采用全局的事件循環(huán)機制,這樣就很容易地實現(xiàn)網(wǎng)絡(luò)上的實時交互行為。11.動態(tài)性java的設(shè)計使它適合于一個不斷發(fā)展的環(huán)境。在類庫中可以自由地加入新的方法和實例變量而不會影響用戶程序的執(zhí)行。并且java通過接口來支持多重繼承,使之比嚴(yán)格的類繼承具有更靈活的方式和擴展性。二、java工作方法1.java虛擬機java的心臟是java虛擬機 ,即jvm。java虛擬機是只能駐留在內(nèi)存中的虛擬計算機。jvm 使 java 程序在各種平臺
9、上運行就像是在編譯代碼的平臺上運行一樣。正是因為java虛擬機,才使得java是可移植的,它提供了一個介于編譯過的java程序和底層硬件平臺及操作系統(tǒng)之間的一個抽象層。運行java虛擬機只內(nèi)用很少內(nèi)存 。這樣設(shè)計的目的是:可以將其用在各種電器上。事實上,java語言最早是為家用電器開發(fā)的。電話、pc機、電視機等等在不久的將來都會固化有允許java程序運行的java虛擬機。2.java編譯與執(zhí)行與許多其他編程語言一樣,java用一個編譯器將人們可讀的源程序代碼轉(zhuǎn)換成可執(zhí)行程序 。傳統(tǒng)編譯器生成的是特定硬件 的可執(zhí)行碼。例如windows 95 c+編譯器生成的是intelx86處理器上可以執(zhí)行的
10、程序,而java編譯器生成的是獨立于處理器結(jié)構(gòu)的字節(jié)代碼。字節(jié)代碼只能用一個java虛擬機(jvm)來執(zhí)行,jvm是理想化的java處理器芯片,通常是在軟件上實現(xiàn)而不是在硬件上實現(xiàn)。圖1 java編譯過程編譯的過程如圖1所示 :java 字節(jié) 代碼文件稱為 類文件(class),因為其包含單個java類 。現(xiàn)在,只要把類看作一組相關(guān)程序或一個擴展數(shù)據(jù)類型。大多數(shù)java程序由多個類文件組成。3.java與c/c+的區(qū)別對于變量聲明、參數(shù)傳遞、操作符、流控制等,java使用了和c、c+相同的傳統(tǒng) ,使得熟悉c、c+的程序員能很方便地進行編程。同時,java為了實現(xiàn)其簡單、魯棒、安全等特性,也摒棄
11、了c和c+中許多不合理的內(nèi)容。(1)全局變量java程序中,不能在所有類之外定義全局變量,只能通過在一個類中定義公用、靜態(tài)的變量來實現(xiàn)一個全局變量。例如:class globalvarpublic static global_var;在類globalvar中定義變量global_var為public static,使得其他類可以訪問和修改該變量。java對全局變量進行了更好的封裝。而在c和c+中,依賴于不加封裝的全局變量常常造成系統(tǒng)的崩潰。(2)gotojava不支持c、c+中的goto語句 ,而是通過例外處理語句try、catch 、final等來代替c 、c+中用goto來處理遇到錯誤時跳
12、轉(zhuǎn)的情況,使程序更可讀且更結(jié)構(gòu)化。(3)指針指針是c、c+中最靈活,也是最容易產(chǎn)生錯誤的數(shù)據(jù)類型。由指針?biāo)M行的內(nèi)存地址操作常會造成不可預(yù)知的錯誤,同時通過指針對某個內(nèi)存地址進行顯式類型轉(zhuǎn)換后,可以訪問一個c+中的私有成員,從而破壞安全性,造成系統(tǒng)的崩潰。而java對指針進行完全的控制,程序員不能直接進行任何指針操作,例如把整數(shù)轉(zhuǎn)化為指針,或者通過指針釋放某一內(nèi)存地址等。同時,數(shù)組作為類在java中實現(xiàn),很好地避免了數(shù)組訪問越界這一c、c+中不作檢查的錯誤。(4)內(nèi)存管理在c中 ,程序員通過庫函數(shù)malloc( )和free( )來分配和釋放內(nèi)存,c+中則通過運算符new和delete來分配和
13、釋放內(nèi)存。如果再次釋放已釋放的內(nèi)存塊或未被分配的內(nèi)存塊,會造成系統(tǒng)的崩潰;同樣,忘記釋放不再使用的內(nèi)存塊也會逐漸耗盡系統(tǒng)資源。而在java中,所有的數(shù)據(jù)結(jié)構(gòu)都是對象,通過運算符new為它們分配內(nèi)存堆。通過new得到對象的處理權(quán) ,而實際分配給對象的 內(nèi)存可能隨程序運行而改變,java對此自動地進行管理并且進行垃圾收集,有效地防止了由于程序員的誤操作而導(dǎo)致的錯誤,并且更好地利用了系統(tǒng)資源。(5)數(shù)據(jù)類型的支持在c、c+中,對于不同的平臺,編譯器對于簡單數(shù)據(jù)類型如int、float等分別分配不同長度的字節(jié)數(shù),例如:int在 ibm pc中為16位,在vax-11中為32位,這導(dǎo)致了代碼的不可移植性
14、,但在java中,對于這些數(shù)據(jù)類型總是分配固定長度的位數(shù),如對int型 ,它總占32位,這就保證了java的平臺無關(guān)性。(6)類型轉(zhuǎn)換在c、c+中,可以通過指針進行任意的類型轉(zhuǎn)換,常常帶來不安全性,而java中,運行時系統(tǒng)對對象的處理要進行類型相容性檢查,以防止不安全的轉(zhuǎn)換。(7)頭文件c、c+中用頭文件來聲明類的原型以及全局變量、庫函數(shù)等,在大的系統(tǒng)中,維護這些頭文件是很困難的。而java不支持頭文件,類成員的類型和訪問權(quán)限都封裝在一個類中,運行時系統(tǒng)對訪問進行控制,防止對私有成員的操作。同時,java中用import語句來與其他類進行通訊,以使用它們的方法。(8)結(jié)構(gòu)和聯(lián)合c、c+中的結(jié)構(gòu)
15、和聯(lián)合中所有成員均為公有,這就帶來了安全性問題。java中不包含結(jié)構(gòu)和聯(lián)合,所有的內(nèi)容都封裝在類中。三、java開發(fā)環(huán)境jdk是java developers kit的簡稱,意即java的發(fā)展工具??梢灾苯尤un公司的主頁上去下載(htttp:/)。本課程所有的例題程序使用jdkl.3.1版,執(zhí)行于windows 98操作系統(tǒng) 。取得的jdk是一個自解壓的執(zhí)行文件,最好先存入一個暫時的工作目錄,執(zhí)行自解執(zhí)行文件后,建議您裝入c:jdk1.3目錄。然后在自動執(zhí)行文件autoexec.bat中的path的路徑設(shè)置層端附加上“ c:jdk1.3bin”和“classpath=.;c:jdkexam
16、plesapplications ;”,重新開機后就可自動指到c:jdk1.3bin目錄了。在c:jdk1.3bin目錄中包含jdk的工具組件 ,提供所有可執(zhí)行文件及動態(tài)連結(jié)庫(dynamic link library簡稱dll)讓你使用。主要軟件包括編譯程序javac、解釋程序java 、調(diào)試程序jdb、反編譯程序javap、文檔生成器javadoc、applet解釋器appletviewer、c語言頭文件工具程序javah等。詳細工具如表:工具程序用途說明javacjava編譯器,將java源代碼換算成字節(jié)代碼javajava翻譯器,直接從類文件執(zhí)行java應(yīng)用程序字節(jié)代碼appletvi
17、ewer(小程序瀏覽器)一種類執(zhí)行html文件上的java小程序類的java瀏覽器javadoc根據(jù)java源代碼及其說明語句生成的html文檔jdbjava調(diào)以器,可以逐行的執(zhí)行程序、設(shè)置斷點和檢查變量javah產(chǎn)生以調(diào)jbjava過程的c過程,或建立能被java程序調(diào)用的c過程的文件頭javapjava反匯編器,顯示編譯類文件中的可訪問功能和數(shù)據(jù), 同時顯示字節(jié)代碼的含義rmic生成支持遠程方法調(diào)用(rmi)的類文件jarjava檔案(jar)文件生成器。jar文件可以在一個壓縮文件中發(fā)布多個java類和資源四、簡單的java程序下面我們先介紹兩個簡單的java程序,并對其進行分析。例1.
18、1 public class helloworldapp /an applicationpublic static void main (string args )system.out.println(“hello world!”);本程序的作用是輸出下面一行信息:hello world!程序中 ,首先 用保留字 class 來聲明 一個新的類 ,其類名為helloworldapp ,它是一個公共類(public)。整個類定義由大括號 括起來。在該類中定義了一個main ( )方法 ,其中public表示訪問權(quán)限,指明所有的類都可以使用這一方法 ;static指明該方法是一個類方法,它可以通過
19、類名直接調(diào)用;void則指明main( )方法不返回任何值。對于一個應(yīng)用程序來說,main( )方法是必須的,而且必須按照以上的格式來定義。java解釋器在沒有生成任何實例的情況下 ,以main( )作為入口來執(zhí)行程序。jave程序中可以定義多個類,每個類中可以定義多個方法,但是最多只能有一個公共類,main( )方法也只能有一個,作為程序的入口。main( )方法定義中,括號( )中的string args 是傳遞給main( )方法的參數(shù) ,參數(shù)名為args,它是類string的一個實例 ,參數(shù)可以為0個或多個,每個參數(shù)用“ 類名 參數(shù)名 ”來指定 ,多個參數(shù)間用逗號分隔。在main( )
20、方法的實現(xiàn)(大括號中) ,只有一條語句:system.out.println (“hello world!”);它用來實現(xiàn)字符串的輸出,這條語句實現(xiàn)與c語言中的 printf 語句和c+中coutjavac helloworldapp.java編譯的結(jié)果是生成字節(jié)碼文件helloworldapp.class。最后用java解釋器來運行該字節(jié)碼文件:c:java helloworldapp結(jié)果在屏幕上顯示hello world!我們再來看下面的一個例子:例1.2 import java.awt.*;import java.applet.*;public class helloworldapple
21、t extends applet /an appletpublic void paint(graphics g)g.drawstring (“hello world!”,20,20); 這是一個簡單的applet(小應(yīng)用程序)。程序中 ,首先用import語句輸入java.awt和java.applet下所有的包,使得該程序可能使用這些包中所定義的類,它類似于c中的#include語句。然后聲明一個公共類helloworldapplet,用extends指明它是applet的子類。在類中,我們重寫父類applet的paint( )方法,其中參數(shù)g為graphics類,它表明當(dāng)前作畫的上下文。在
22、paint( )方法中 ,調(diào)用g的方法drawstring( ),在坐標(biāo)(20,20)處輸出字符串“hello world!”,其中坐標(biāo)是用象素點來表示的。這個程序中沒有實現(xiàn)main( )方法,這是applet與應(yīng)用程序application(如例1)的區(qū)別之一 。為了運行該程序,首先我們也要把它放在文件helloworldapplet.java中,然后對它進行編譯:c:javac helloworldapplet.java得到字節(jié)碼文件helloworldapplet.class 。由于applet中沒有main()方法作為java解釋器的入口,我們必須編寫html文件 ,把該applet嵌
23、入其中 ,然后用 appletviewer 來運行,或在支持java的瀏覽器上運行。它的文件如下: an applet 其中用標(biāo)記來啟動helloworldapplet ,code指明字節(jié)碼所在的文件,width和height指明applet所占的大小,我們把這個html文件存入example.html,然后運行:c:appletviewer example.html這時屏幕上彈出一個窗口,其中顯示hello world!,顯示結(jié)果如圖1.3.4所示。從上述例子中可以看出,java程序是由類構(gòu)成的 ,對于一個應(yīng)用程序來說,必須有一個類中定義main( )方法,而對applet來說,它必須作為a
24、pplet一個子類。在類的定義中 ,應(yīng)包含類變量的聲明和類中方法的實現(xiàn)。java在基本數(shù)據(jù)類型 、運算符、表達式、控制語句等方面與c、c+基本上是相同的 ,但它同時也增加了一些新的內(nèi)容。第一章 java語言概述 faq一、java與c/c+的區(qū)別對于變量聲明、參數(shù)傳遞、操作符、流控制等,java使用了和c、c+相同的傳統(tǒng) ,使得熟悉c、c+的程序員能很方便地進行編程。同時,java為了實現(xiàn)其簡單、魯棒、安全等特性,也摒棄了c和c+中許多不合理的內(nèi)容。1.全局變量java程序中,不能在所有類之外定義全局變量,只能通過在一個類中定義公用、靜態(tài)的變量來實現(xiàn)一個全局變量。例如:class global
25、varpublic static global_var;在類globalvar中定義變量global_var為public static,使得其他類可以訪問和修改該變量。java對全局變量進行了更好的封裝。而在c和c+中,依賴于不加封裝的全局變量常常造成系統(tǒng)的崩潰。2.gotojava不支持c、c+中的goto語句 ,而是通過例外處理語句try、catch 、final等來代替c 、c+中用goto來處理遇到錯誤時跳轉(zhuǎn)的情況,使程序更可讀且更結(jié)構(gòu)化。3.指針指針是c、c+中最靈活,也是最容易產(chǎn)生錯誤的數(shù)據(jù)類型。由指針?biāo)M行的內(nèi)存地址操作常會造成不可預(yù)知的錯誤,同時通過指針對某個內(nèi)存地址進行顯式
26、類型轉(zhuǎn)換后,可以訪問一個c+中的私有成員,從而破壞安全性,造成系統(tǒng)的崩潰。而java對指針進行完全的控制,程序員不能直接進行任何指針操作,例如把整數(shù)轉(zhuǎn)化為指針,或者通過指針釋放某一內(nèi)存地址等。同時,數(shù)組作為類在java中實現(xiàn),很好地避免了數(shù)組訪問越界這一c、c+中不作檢查的錯誤。4.內(nèi)存管理在c中 ,程序員通過庫函數(shù)malloc( )和free( )來分配和釋放內(nèi)存,c+中則通過運算符new和delete來分配和釋放內(nèi)存。如果再次釋放已釋放的內(nèi)存塊或未被分配的內(nèi)存塊,會造成系統(tǒng)的崩潰;同樣,忘記釋放不再使用的內(nèi)存塊也會逐漸耗盡系統(tǒng)資源。而在java中,所有的數(shù)據(jù)結(jié)構(gòu)都是對象,通過運算符new為
27、它們分配內(nèi)存堆。通過new得到對象的處理權(quán) ,而實際分配給對象的 內(nèi)存可能隨程序運行而改變,java對此自動地進行管理并且進行垃圾收集,有效地防止了由于程序員的誤操作而導(dǎo)致的錯誤,并且更好地利用了系統(tǒng)資源。5.數(shù)據(jù)類型的支持在c、c+中,對于不同的平臺,編譯器對于簡單數(shù)據(jù)類型如int、float等分別分配不同長度的字節(jié)數(shù),例如:int在 ibm pc中為16位,在vax-11中為32位,這導(dǎo)致了代碼的不可移植性,但在java中,對于這些數(shù)據(jù)類型總是分配固定長度的位數(shù),如對int型 ,它總占32位,這就保證了java的平臺無關(guān)性。6.類型轉(zhuǎn)換在c、c+中,可以通過指針進行任意的類型轉(zhuǎn)換,常常帶來
28、不安全性,而java中,運行時系統(tǒng)對對象的處理要進行類型相容性檢查,以防止不安全的轉(zhuǎn)換。7.頭文件c、c+中用頭文件來聲明類的原型以及全局變量、庫函數(shù)等,在大的系統(tǒng)中,維護這些頭文件是很困難的。而java不支持頭文件,類成員的類型和訪問權(quán)限都封裝在一個類中,運行時系統(tǒng)對訪問進行控制,防止對私有成員的操作。同時,java中用import語句來與其他類進行通訊,以使用它們的方法。8.結(jié)構(gòu)和聯(lián)合c、c+中的結(jié)構(gòu)和聯(lián)合中所有成員均為公有,這就帶來了安全性問題。java中不包含結(jié)構(gòu)和聯(lián)合,所有的內(nèi)容都封裝在類中。二、java應(yīng)用程序與小程序java程序可分為兩種: java應(yīng)用程序(java appli
29、cation)java小程序(java applet)小程序就是小的應(yīng)用程序,其在計算機行業(yè)中有傳統(tǒng)的含義 。在java中 ,小程序就是可從web文檔進來的java程序 ,換句話說,是從html文件進來的程序。而java應(yīng)用程序則是從命令行上運行的程序 ,對java而言,java小程序的大小和復(fù)雜性都沒有限制 。事實上,java小程序有的方面比java應(yīng)用程序更強大。但是在internet上 ,由于通信速度有限,下載時間很長,因此大多數(shù)java小程序規(guī)模較小。第一章 java語言概述 關(guān)鍵詞匯1、魯棒性java在編譯和運行程序時,都要對可能出現(xiàn)的問題進行檢查,以消除錯誤。它提供自動垃圾收集來進
30、行內(nèi)存管理,防止程序員在管理內(nèi)存時容易產(chǎn)生的錯誤。通過集成的、面向?qū)ο蟮睦馓幚頇C制,在編譯時,java提示出可能出現(xiàn)但未被處理的例外,幫助程序員正確地進行選擇以防止系統(tǒng)的崩潰。另外,java在編譯時還可捕獲類型聲明中的許多常見錯誤,防止動態(tài)運行時不匹配問題的出現(xiàn)。2、java虛擬機(jvm)java的心臟是java虛擬機 ,即jvm。java虛擬機是只能駐留在內(nèi)存中的虛擬計算機。jvm 使 java 程序在各種平臺上運行就像是在編譯代碼的平臺上運行一樣。正因為java程序是由java虛擬機編譯的,所以它成為不平凡的語言。但是為了使java程序能夠運行在某個特定的平臺上,該平臺必須啟用java
31、虛擬機。正是因為java虛擬機,才使得java是可移植的,它提供了一個介于編譯過的java程序和底層硬件平臺及操作系統(tǒng)之間的一個抽象層。運行java虛擬機只內(nèi)用很少內(nèi)存 。這樣設(shè)計的目的是:可以將其用在各種電器上。事實上,java語言最早是為家用電器開發(fā)的。電話、pc機、電視機等等在不久的將來都會固化有允許java程序運行的java虛擬機。3、面向?qū)ο骿ava語言的設(shè)計集中于對象及其接口,它提供了簡單的類機制以及動態(tài)的接口模型。對象中封裝了它的狀態(tài)變量以及相應(yīng)的方法,實現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,并且通過繼承機制,子類可以使用父類所提供的方法,實現(xiàn)了代碼的復(fù)用。4、可移植
32、性與平臺無關(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)本身也具有可移植性。第一章 java語言概述 拓展資源java相關(guān)技術(shù)1、jdbc(java database connectivity)提供連接各種關(guān)系數(shù)據(jù)庫的統(tǒng)一接口。2、ejb(enterprise javabeans)使得開發(fā)者方便地創(chuàng)建、部署和管理跨平臺的基于組件的企業(yè)應(yīng)用。3、java rmi(java remote method invocation)用
33、來開發(fā)分布式j(luò)ava應(yīng)用程序。一個java對象的方法能被遠程java虛擬機調(diào)用。這樣,遠程方法激活可以發(fā)生在對等的兩端,也可以發(fā)生在客戶端和服務(wù)器之間,只要雙方的應(yīng)用程序都是用java寫的。4、java idl(java interface definition language) 提供與corba(common object request broker architecture)的無縫的互操作性。這使得java能集成異構(gòu)的商務(wù)信息資源。5、jndi(java naming and directory interface)提供從java平臺到的統(tǒng)一的無縫的連接。這個接口屏蔽了企業(yè)網(wǎng)絡(luò)所使用的
34、各種命名和目錄服務(wù)。6、jmapi(java management api)為異構(gòu)網(wǎng)絡(luò)上系統(tǒng)、網(wǎng)絡(luò)和服務(wù)管理的開發(fā)提供一整套豐富的對象和方法。7、jms(java message service)提供企業(yè)消息服務(wù),如可靠的消息隊列、發(fā)布和訂閱通信、以及有關(guān)推拉(push/pull)技術(shù)的各個方面。8、jts(java transaction service)提供存取事務(wù)處理資源的開放標(biāo)準(zhǔn),這些事務(wù)處理資源包括事務(wù)處理應(yīng)用程序、事務(wù)處理管理及監(jiān)控。在java技術(shù)中,值得關(guān)注的還有javabeans,它是一個開放的標(biāo)準(zhǔn)的組件體系結(jié)構(gòu),它獨立于平臺,但使用java語言。一個javabean是一個滿足
35、javabeans規(guī)范的java類,通常定義了一個現(xiàn)實世界的事物或概念。一個javabean的主要特征包括屬性、方法和事件。通常,在一個支持javabeans規(guī)范的開發(fā)環(huán)境(如sun java studio 和ibm visualage for java)中,可以可視地操作javabean,也可以使用javabean構(gòu)造出新的javabean。javabean的優(yōu)勢還在于java帶來的可移植性。現(xiàn)在,ejb (enterprise javabeans) 將javabean概念擴展到j(luò)ava服務(wù)端組件體系結(jié)構(gòu),這個模型支持多層的分布式對象應(yīng)用。除了javabeans,典型的組件體系結(jié)構(gòu)還有dco
36、m和corba,關(guān)于這些組件體系結(jié)構(gòu)的深入討論超出了本書的范圍。java開源項目spring framework spring 是一個解決了許多在j2ee開發(fā)中常見的問題的強大框架。 spring提供了管理業(yè)務(wù)對象的一致方法并且鼓勵了注入對接口編程而不是對類編程的良好習(xí)慣。spring的架構(gòu)基礎(chǔ)是基于使用javabean屬性的 inversion of control容器。然而,這僅僅是完整圖景中的一部分:spring在使用ioc容器作為構(gòu)建完關(guān)注所有架構(gòu)層的完整解決方案方面是獨一無二的。 spring提供了唯一的數(shù)據(jù)訪問抽象,包括簡單和有效率的jdbc框架,極大的改進了效率并且減少了可能的錯
37、誤。spring的數(shù)據(jù)訪問架構(gòu)還集成了 hibernate和其他o/r mapping解決方案。spring還提供了唯一的事務(wù)管理抽象,它能夠在各種底層事務(wù)管理技術(shù),例如jta或者jdbc事務(wù)提供一個一致的編程模型。 spring提供了一個用標(biāo)準(zhǔn)java語言編寫的aop框架,它給pojos提供了聲明式的事務(wù)管理和其他企業(yè)事務(wù)-如果你需要-還能實現(xiàn)你自己的 aspects。這個框架足夠強大,使得應(yīng)用程序能夠拋開ejb的復(fù)雜性,同時享受著和傳統(tǒng)ejb相關(guān)的關(guān)鍵服務(wù)。spring還提供了可以和ioc容器集成的強大而靈活的mvc web框架。webworkwebwork 是由opensymphony組
38、織開發(fā)的,致力于組件化和代碼重用的拉出式mvc模式j(luò)2ee web框架。webwork目前最新版本是2.1,現(xiàn)在的webwork2.x前身是rickard oberg開發(fā)的webwork,但現(xiàn)在webwork已經(jīng)被拆分成了xwork1和webwork2兩個項目。 xwork簡潔、靈活功能強大,它是一個標(biāo)準(zhǔn)的command模式實現(xiàn),并且完全從web層脫離出來。 xwork提供了很多核心功能:前端攔截機(interceptor),運行時表單屬性驗證,類型轉(zhuǎn)換,強大的表達式語言(ognl the object graph notation language),ioc(inversion of con
39、trol倒置控制)容器等。 webwork2建立在xwork之上,處理http的響應(yīng)和請求。webwork2使用servletdispatcher將http請求的變成 action(業(yè)務(wù)層action類), session(會話)application(應(yīng)用程序)范圍的映射,request請求參數(shù)映射。webwork2支持多視圖表示,視圖部分可以使用 jsp, velocity, freemarker, jasperreports,xml等。在webwork2.2中添加了對ajax的支持,這支持是構(gòu)建在dwr與dojo這兩個框架的基礎(chǔ)之上. struts struts 是一個基于sun j2e
40、e平臺的mvc框架,主要是采用servlet和jsp技術(shù)來實現(xiàn)的。由于struts能充分滿足應(yīng)用開發(fā)的需求,簡單易用,敏捷迅速,在過去的一年中頗受關(guān)注。struts把servlet、jsp、自定義標(biāo)簽和信息資源(message resources)整合到一個統(tǒng)一的框架中,開發(fā)人員利用其進行開發(fā)時不用再自己編碼實現(xiàn)全套mvc模式,極大的節(jié)省了時間,所以說struts是一個非常不錯的應(yīng)用框架。hibernate hibernate 是一個開放源代碼的對象關(guān)系映射框架,它對jdbc進行了非常輕量級的對象封裝,使得java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 hibernate可以應(yīng)用在
41、任何使用jdbc的場合,既可以在java的客戶端程序?qū)嵱茫部梢栽趕ervlet/jsp的web應(yīng)用中使用,最具革命意義的是,hibernate可以在應(yīng)用ejb的j2ee架構(gòu)中取代cmp,完成數(shù)據(jù)持久化的重任。 quartz quartz 是opensymphony開源組織在job scheduling領(lǐng)域又一個開源項目,它可以與j2ee與j2se應(yīng)用程序相結(jié)合也可以單獨使用。quartz可以用來創(chuàng)建簡單或為運行十個,百個,甚至是好幾萬個jobs這樣復(fù)雜的日程序表。jobs可以做成標(biāo)準(zhǔn)的java組件或 ejbs。quartz的最新版本為quartz 1.5.0。velocity velocit
42、y 是一個基于java的模板引擎(template engine)。它允許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。當(dāng)velocity應(yīng)用于web開發(fā)時,界面設(shè)計人員可以和java程序開發(fā)人員同步開發(fā)一個遵循mvc架構(gòu)的web站點,也就是說,頁面設(shè)計人員可以只關(guān)注頁面的顯示效果,而由java程序開發(fā)人員關(guān)注業(yè)務(wù)邏輯編碼。velocity將java代碼從web頁面中分離出來,這樣為web站點的長期維護提供了便利,同時也為我們在jsp和php之外又提供了一種可選的方案。 velocity的能力遠不止web站點開發(fā)這個領(lǐng)域,例如,它可以從模板(
43、template)產(chǎn)生sql和postscript、xml,它也可以被當(dāng)作一個獨立工具來產(chǎn)生源代碼和報告,或者作為其他系統(tǒng)的集成組件使用。velocity也可以為turbine web開發(fā)架構(gòu)提供模板服務(wù)(template service)。velocity+turbine提供一個模板服務(wù)的方式允許一個web應(yīng)用以一個真正的mvc模型進行開發(fā)。 ibatis 使用ibatis 提供的orm機制,對業(yè)務(wù)邏輯實現(xiàn)人員而言,面對的是純粹的java對象, 這一層與通過hibernate 實現(xiàn)orm 而言基本一致,而對于具體的數(shù)據(jù)操作,hibernate 會自動生成sql 語句,而ibatis 則要求開
44、發(fā)者編寫具體的sql 語句。相對hibernate等 “全自動”orm機制而言,ibatis 以sql開發(fā)的工作量和數(shù)據(jù)庫移植性上的讓步,為系統(tǒng)設(shè)計提供了更大的自由空間。作為“全自動”orm 實現(xiàn)的一種有益補充,ibatis 的出現(xiàn)顯 得別具意義。compiere erp&crmcompiere erp&crm為全球范圍內(nèi)的中小型企業(yè)提供綜合型解決方案,覆蓋從客戶管理、供應(yīng)鏈到財務(wù)管理的全部領(lǐng)域,支持多組織、多幣種、多會計模式、多成本計算、多語種、多稅制等國際化特性。易于安裝、易于實施、易于使用。只需要短短幾個小時,您就可以使用申購-采購-發(fā)票-付款、報價-訂單-發(fā)票-收款、產(chǎn)品與定價、資產(chǎn)管
45、理、客戶關(guān)系、供應(yīng)商關(guān)系、員工關(guān)系、經(jīng)營業(yè)績分析等強大功能了。roller weblogger這個weblogging 設(shè)計得比較精巧,源代碼是很好的學(xué)習(xí)資料。它支持weblogging應(yīng)有的特性如:評論功能,所見即所得html編輯,trackback,提供頁面模板,rss syndication,blogroll管理和提供一個xml-rpc 接口。eclipse eclipse平臺是ibm向開放源碼社區(qū)捐贈的開發(fā)框架,它之所以出名并不是因為ibm宣稱投入開發(fā)的資金總數(shù) 4千萬美元,而是因為如此巨大的投入所帶來的成果:一個成熟的、精心設(shè)計的以及可擴展的體系結(jié)構(gòu)。netbeansnetbeans
46、 ide 是一個為軟件開發(fā)者提供的自由、開源的集成開發(fā)環(huán)境。您可以從中獲得您所需要的所有工具,用 java、c/c+ 甚至是 ruby 來創(chuàng)建專業(yè)的桌面應(yīng)用程序、企業(yè)應(yīng)用程序、web 和移動應(yīng)用程序。此 ide 可以在多種平臺上運行,包括 windows、linux、mac os x 以及 solaris;它易于安裝且非常方便使用。xplannerxplanner 一個基于web的xp團隊計劃和跟蹤工具。xp獨特的開發(fā)概念如iteration、user stories等,xplanner都提供了相對應(yīng)的的管理工具,xplanner支持xp開發(fā)流程,并解決利用xp思想來開發(fā)項目所碰到的問題。 x
47、planner特點包括:簡單的模型規(guī)劃,虛擬筆記卡(virtual note cards),iterations、user stories與工作記錄的追蹤,未完成stories將自動迭代,工作時間追蹤,生成團隊效率,個人工時報表,soap界面支持。hsqldbhsqldb(hypersonic sql)是純java開發(fā)的關(guān)系型數(shù)據(jù)庫,并提供jdbc驅(qū)動存取數(shù)據(jù)。支持ansi-92 標(biāo)準(zhǔn) sql語法。而且他占的空間很小。大約只有160k,擁有快速的數(shù)據(jù)庫引擎。liferay代表了完整的j2ee應(yīng)用,使用了web、ejb以及jms等技術(shù),特別是其前臺界面部分使用struts 框架技術(shù),基于xml的
48、portlet配置文件可以自由地動態(tài)擴展,使用了web services來支持一些遠程信息的獲取,使用 apahce lucene實現(xiàn)全文檢索功能。jetspeedjetspeed 是一個開放源代碼的企業(yè)信息門戶(eip)的實現(xiàn),使用的技術(shù)是java和xml。用戶可以使用瀏覽器,支持wap協(xié)議的手機或者其它的設(shè)備訪問jetspeed架設(shè)的信息門戶獲取信息。jetspeed扮演著信息集中器的角色,它能夠把信息集中起來并且很容易地提供給用戶。jonasjonas 是一個開放源代碼的j2ee實現(xiàn),在objectweb協(xié)會中開發(fā)。整合了tomcat或jetty成為它的web容器,以確保符合servle
49、t 2.3和jsp 1.2規(guī)范。jonas服務(wù)器依賴或?qū)崿F(xiàn)以下的java api:jca、jdbc、jta 、jms、jmx、jndi、jaas、javamail 。jfox3.0 jfox 是 open source java ee application server,致力于提供輕量級的java ee應(yīng)用服務(wù)器,從3.0開始,jfox提供了一個支持模塊化的mvc框架,以簡化ejb以及web應(yīng)用的開發(fā)! 如果您正在尋找一個簡單、輕量、高效、完善的java ee開發(fā)平臺,那么jfox正是您需要的。java ide當(dāng)今最流行的是eclipse,myeclipse,jbuilder2008,jde
50、veloper,netbeans等。第二章 java語言基礎(chǔ) 課堂筆記u 主要知識點掌握程度 掌握java語言的基本語法;java語言的簡單數(shù)據(jù)類型,包括整型數(shù)據(jù)、浮點型數(shù)據(jù)、字符型數(shù)據(jù)、邏輯型數(shù)據(jù)和常見數(shù)據(jù)類型構(gòu)成的數(shù)組和向量的使用;理解數(shù)據(jù)類型轉(zhuǎn)換的格式;理解數(shù)組使用的特點和必要性;掌握java語句結(jié)構(gòu),包括復(fù)合語句、分支語句、轉(zhuǎn)移語句。掌握數(shù)組及java一般程序結(jié)構(gòu)。u 知識點整理 一、java數(shù)據(jù)類型。 1、標(biāo)識符 標(biāo)識符是變量、類和函數(shù)的名稱。標(biāo)識符可以隨意選擇,只要以字母開頭,由字母、數(shù)字、_和$號組成且不屬關(guān)鍵字即可。標(biāo)識符不限于ascii碼,如果編輯器支持,變量名可以用unic
51、ode字符 。標(biāo)識符中的字符個數(shù)也沒有限制。如果二個變量的第512個位置不同 ,則編譯器也能發(fā)現(xiàn)并分別處理 。當(dāng)然 ,大多數(shù)人談起你的代碼可能沒這么精確,所以要慎用。 下列列出一些合法的及非法的標(biāo)識符合法的標(biāo)識符:idertifierusernameuser_name_sys_value$change非法的標(biāo)識符號:2mail room# class其中class是java語言中的保留字,不能作為普通標(biāo)識符使用。2、關(guān)鍵字abstractelse longswichboolenextendsnativesynchronizedbreakfinalnewthisbytefinallynullth
52、rowcasefloatpackagethrowscatchforprivatetransientchargoto*protectedtryclassifpublicvoidconst*implementsreturnvolatilecontinueimportshortwhiledefaultinstanceofstaticwidefpdointsstrictfpdoubleinterfacesuper* 這些是目前未用的保留關(guān)鍵字3、常量 java中的常量值是用文字串表示的,它區(qū)分為不同的類型,如整型常量123,實型常量1.23,字符常量a ,布爾常量true、false,以及字符串常量“
53、this is a constant string.”。 4、變量 變量是java程序中的基本存儲單元,它的定義包括變量名、變量類型和作用域幾個部分。 變量名是一個合法的標(biāo)識符 ,它是字母、數(shù)字、下劃線或美元符“”的序列,java對變量名區(qū)分大小寫,變量名不能以數(shù)字開頭 ,而且不能為保留字 。合法的變量名如 :myname 、value_1 、 dollar等。非法的變量名如:2mail 、 room# 、 class (保留字)等,變量名應(yīng)具有一定的含義,以增加程序的可讀性。 變量類型可以為上面所說的任意一種數(shù)據(jù)類型。 變量的作用域指明可訪問該變量的一段代碼 。聲明一個變量的同時也就指明了變
54、量的作用域。按作用域來分,變量可以有下面幾種:局部變量,類變量,方法參數(shù),例外處理參數(shù)。變量的聲明格式為:數(shù)據(jù)類型 標(biāo)識符(變量名)缺省值,標(biāo)識符缺省值 ;type identifier=value,identifier=value;例如: int a, b, c; double d1, d2=0.0; 5.數(shù)據(jù)類型整數(shù)類型(1)整型常量與c、c+相同,java的整常數(shù)有三種形式:十進制整數(shù),如123,456,0。八進制整數(shù),以0開頭,如0123表示十進制數(shù)83,011表示十進制數(shù)9。十六進制整數(shù) ,以0x或0x開頭 ,如0x123表示十進制數(shù)291,0x12表示十進制數(shù)18。整型常量在機器中占32位,具有int型的值 ,對于long型值,則要在數(shù)字后加l或l,如123l表示一個長整數(shù),它在機器中占64位。(2)整型變量的類型有byte, short, int, long四種。浮點型(實型)數(shù)據(jù)(1)實型常量與c、c+相同,java的實常數(shù)有兩種表示形式:十進制數(shù),由數(shù)字和小數(shù)點組成,且必須有小數(shù)點,如0.123,1.23,123.0??茖W(xué)計數(shù)法形式。如:123e3或123e3,其中e或e之
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高考歷史一輪復(fù)習(xí)方案專題十四古今中國的科技和文藝第31講古代中國的科技與文化成就教學(xué)案+練習(xí)人民版
- 2024高考地理一輪復(fù)習(xí)第二章第2講氣壓帶和風(fēng)帶教案含解析新人教版
- 小學(xué)“五項管理”工作實施方案
- 墻面石材鋪裝標(biāo)準(zhǔn)及方案
- 二零二五年度人才公寓租賃及配套設(shè)施協(xié)議3篇
- 外研版(一起)小學(xué)英語一年級上冊module-3-unit-2-point
- 電視事業(yè)個人年終總結(jié)匯報
- 2024年浙江郵電職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 三峽工程對長江三角洲沖淤影響教案資料
- 火災(zāi)事故現(xiàn)場處置方案培訓(xùn)試題
- 2024年采購員年終總結(jié)
- 2024年新疆區(qū)公務(wù)員錄用考試《行測》試題及答案解析
- 肺動脈高壓的護理查房課件
- 2025屆北京巿通州區(qū)英語高三上期末綜合測試試題含解析
- 煤炭行業(yè)智能化煤炭篩分與洗選方案
- 2024年機修鉗工(初級)考試題庫附答案
- Unit 5 同步練習(xí)人教版2024七年級英語上冊
- 分潤模式合同模板
- 2024年長春醫(yī)學(xué)高等??茖W(xué)校單招職業(yè)適應(yīng)性測試題庫必考題
- (正式版)SHT 3046-2024 石油化工立式圓筒形鋼制焊接儲罐設(shè)計規(guī)范
- 2023年山東濟南市初中學(xué)業(yè)水平考試地理試卷真題(答案詳解)
評論
0/150
提交評論