第1章Java語(yǔ)言概述_第1頁(yè)
第1章Java語(yǔ)言概述_第2頁(yè)
第1章Java語(yǔ)言概述_第3頁(yè)
第1章Java語(yǔ)言概述_第4頁(yè)
第1章Java語(yǔ)言概述_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Java程序設(shè)計(jì)宋瑾鈺10-232主要內(nèi)容Java的基本概況Java語(yǔ)言基礎(chǔ)面向?qū)ο蟮母鞣N實(shí)現(xiàn)機(jī)制常用數(shù)據(jù)結(jié)構(gòu)輸入輸出、異常處理圖形界面編程數(shù)據(jù)庫(kù)常見(jiàn)的Java一些高級(jí)應(yīng)用教學(xué)目標(biāo)掌握J(rèn)ava語(yǔ)言的基本知識(shí)和面向?qū)ο蟪绦蛟O(shè)計(jì)方法能夠運(yùn)用面向?qū)ο蟪绦蛟O(shè)計(jì)思想,正確的分析程序和設(shè)計(jì)程序,具有Java程序設(shè)計(jì)能力。為后續(xù)課程打好基礎(chǔ)。教學(xué)安排理論講授30學(xué)時(shí)實(shí)驗(yàn)18學(xué)時(shí)成績(jī)由平時(shí)成績(jī)+實(shí)驗(yàn)+期末大作業(yè)組成。第一章Java語(yǔ)言概述

【本章導(dǎo)讀】在學(xué)習(xí)任何一門(mén)語(yǔ)言之前,都應(yīng)該先了解該門(mén)語(yǔ)言的背景,包括該門(mén)語(yǔ)言的發(fā)展歷史。再就是在準(zhǔn)備更深入地學(xué)習(xí)一門(mén)語(yǔ)言前,應(yīng)該對(duì)該語(yǔ)言的特點(diǎn)有一個(gè)比較全面正確的理解,這樣才能使學(xué)習(xí)更有效。本章主要介紹Java的發(fā)展史、Java語(yǔ)言的特點(diǎn)、Java的工作原理、Java運(yùn)行平臺(tái)及Java應(yīng)用程序分類(lèi)。

【本章要點(diǎn)】

Java的發(fā)展史Java語(yǔ)言的特點(diǎn)Java的工作原理Java運(yùn)行平臺(tái)Java應(yīng)用程序分類(lèi)1.1、Java歷史及發(fā)展Java是一種解釋型的、面向?qū)ο蟮木幊陶Z(yǔ)言。歷史:1991年,SUNMicroSystem公司的JameGosling、BillJoe等人為在電視、控制烤箱等家用消費(fèi)類(lèi)電子產(chǎn)品上進(jìn)行交互式操作而開(kāi)發(fā)了一個(gè)名為Oak的軟件。

Oak—>Java:互聯(lián)網(wǎng)給Java帶來(lái)新的生機(jī)

1995年Sun向公眾推出Java并引起業(yè)界的轟動(dòng)發(fā)展:面向網(wǎng)絡(luò)應(yīng)用,類(lèi)庫(kù)不斷豐富,性能不斷提高,應(yīng)用領(lǐng)域不斷拓展。(1995年以來(lái))高級(jí)語(yǔ)言中用于描述計(jì)算的結(jié)構(gòu)采用類(lèi)似于數(shù)學(xué)中代數(shù)運(yùn)算公式的形式,這種結(jié)構(gòu)被稱(chēng)為“表達(dá)式”。程序中基本的動(dòng)作單位被稱(chēng)為“語(yǔ)句”,不同的語(yǔ)句實(shí)現(xiàn)不同的功能。用高級(jí)語(yǔ)言書(shū)寫(xiě)的程序不可能直接地在計(jì)算機(jī)上執(zhí)行,要在計(jì)算機(jī)上執(zhí)行高級(jí)語(yǔ)言書(shū)寫(xiě)的程序,有兩種基本方法:

編譯(Compilation)執(zhí)行:這種方法是設(shè)法把高級(jí)語(yǔ)言程序(也稱(chēng)為“源程序”)轉(zhuǎn)換成為機(jī)器語(yǔ)言的可以由計(jì)算機(jī)直接執(zhí)行的程序,即轉(zhuǎn)變?yōu)椤翱蓤?zhí)行(Executable)程序”?!敖忉尅保↖nterpretation)執(zhí)行:這種方法是即時(shí)把源程序轉(zhuǎn)換為機(jī)器可執(zhí)行的指令。有時(shí)為了提高效率,也可以先編譯成一種中間代碼。

——高級(jí)程序設(shè)計(jì)語(yǔ)言對(duì)于“編譯執(zhí)行”方式,人們實(shí)現(xiàn)了高級(jí)語(yǔ)言“編譯器”(Compiler)完成這種轉(zhuǎn)換工作。編譯器把高級(jí)語(yǔ)言程序看成是符合一定語(yǔ)法結(jié)構(gòu)的符號(hào)串,對(duì)它進(jìn)行加工變換。編譯器對(duì)源程序的加工一般分為兩個(gè)階段:源程序首先被翻譯成機(jī)器語(yǔ)言,這種翻譯結(jié)果稱(chēng)為“目標(biāo)碼”(objectcode),目標(biāo)碼構(gòu)成的程序片段稱(chēng)為目標(biāo)模塊。第二步,這些目標(biāo)模塊被與其他一些基本模塊(由編譯軟件提供)連接在一起,最終形成“可執(zhí)行程序”(executableprogram),這樣的程序就可以在計(jì)算機(jī)上實(shí)際運(yùn)行了。第一個(gè)加工步驟稱(chēng)為“編譯”(compiling),第二個(gè)步驟稱(chēng)為“連接”(linking)。

——高級(jí)程序設(shè)計(jì)語(yǔ)言

——高級(jí)程序設(shè)計(jì)語(yǔ)言編譯過(guò)程對(duì)于“解釋執(zhí)行”方式,人們實(shí)現(xiàn)了一種稱(chēng)為“解釋器”(Interpreter)的軟件來(lái)完成轉(zhuǎn)換工作。解釋器在工作方式上與編譯器不同,它不對(duì)源程序進(jìn)行翻譯,而是直接對(duì)源程序的語(yǔ)句進(jìn)行分析和解釋?zhuān)瑢?shí)現(xiàn)源程序所描述的功能。

——高級(jí)程序設(shè)計(jì)語(yǔ)言解釋過(guò)程

——高級(jí)程序設(shè)計(jì)語(yǔ)言高級(jí)語(yǔ)言寫(xiě)出的程序是獨(dú)立于任何具體的計(jì)算機(jī)的。但是“編譯器”和“解釋器”則是與機(jī)器相關(guān)的。同一種語(yǔ)言,對(duì)于不同的機(jī)器,需要不同的“編譯器”和“解釋器”。人們已經(jīng)開(kāi)發(fā)出了許多不同的高級(jí)程序設(shè)計(jì)語(yǔ)言,不同的語(yǔ)言有各自不同的規(guī)范,因此需要專(zhuān)門(mén)的“編譯器”和“解釋器”。1.1Java的發(fā)展史

Java語(yǔ)言的轉(zhuǎn)折性發(fā)展

1996年,JDK1.0發(fā)布,10大軟件公司宣布支持Java技術(shù)。

1996年,JDK1.1發(fā)布。

1998年,JDK1.2發(fā)布。

1999年,JAVA被分為J2SE、J2EE和J2ME。

2000年,JDK1.3,JDK1.4發(fā)布。

1.2Java語(yǔ)言的特點(diǎn)

Java是一個(gè)廣泛使用的網(wǎng)絡(luò)編程語(yǔ)言,它是一種新的計(jì)算概念。它是一種跨平臺(tái),適合于分布式計(jì)算環(huán)境的面向?qū)ο缶幊陶Z(yǔ)言。作為一種程序設(shè)計(jì)語(yǔ)言,可以用一句話來(lái)概括Java語(yǔ)言的特點(diǎn):“簡(jiǎn)單的、面向?qū)ο蟮摹⑵脚_(tái)無(wú)關(guān)性的、分布式的、解釋的、健壯的、安全的、結(jié)構(gòu)中立的、可移植的、性能優(yōu)異的、多線程的、動(dòng)態(tài)的語(yǔ)言?!?.2.1Java語(yǔ)言特點(diǎn)1、簡(jiǎn)單性

Java語(yǔ)言是一種面向?qū)ο蟮恼Z(yǔ)言,它通過(guò)提供最基本的方法來(lái)完成指定的任務(wù),只需理解一些基本的概念,就可以用它編寫(xiě)出適合于各種情況的應(yīng)用程序。

2、面向?qū)ο?面向?qū)ο笃鋵?shí)是現(xiàn)實(shí)世界模型的自然延伸。現(xiàn)實(shí)世界中任何實(shí)體都可以看作是對(duì)象。對(duì)象之間通過(guò)消息相互作用??陀^世界中的一切都可以看做對(duì)象!換句話說(shuō)萬(wàn)物皆為對(duì)象!3、平臺(tái)無(wú)關(guān)性

Java是平臺(tái)無(wú)關(guān)的語(yǔ)言是指用Java寫(xiě)的應(yīng)用程序不用修改就可在不同的軟硬件平臺(tái)上運(yùn)行。Sun公司的宗旨是:“WriteOnce,RunAnywhere”一次編譯,到處運(yùn)行。

1.2.2Java語(yǔ)言其他的特點(diǎn)4、多線程5、可靠性和安全性

6、分布式7、解釋執(zhí)行8、體系結(jié)構(gòu)中立

9、可移植性不再有全局變量不再有#include和#define等預(yù)處理功能不再有structure、union及typedef等不再有函數(shù)、不再有指針、不再有多重繼承不再有g(shù)oto語(yǔ)句不再有操作符重載(OperatiorOverloading)

取消自動(dòng)類(lèi)型轉(zhuǎn)換,要求強(qiáng)制轉(zhuǎn)換自動(dòng)進(jìn)行內(nèi)存管理3、Java語(yǔ)言特點(diǎn) 與C及C++的區(qū)別Java語(yǔ)言的應(yīng)用前景所有面向?qū)ο蟮膽?yīng)用開(kāi)發(fā),包括面向?qū)ο蟮氖录枋?、處理、綜合等。計(jì)算過(guò)程的可視化、可操作化的軟件的開(kāi)發(fā)。動(dòng)態(tài)畫(huà)面的設(shè)計(jì),包括圖形圖像的調(diào)用。交互操作的設(shè)計(jì)(選擇交互、定向交互、控制流程等)。Internet的系統(tǒng)管理功能模塊的設(shè)計(jì),包括

Web頁(yè)面的動(dòng)態(tài)設(shè)計(jì)、管理和交互操作設(shè)計(jì)等。Intranet(企業(yè)內(nèi)部網(wǎng))上的軟件開(kāi)發(fā)(直接面向企業(yè)內(nèi)部用戶(hù)的軟件)。與各類(lèi)數(shù)據(jù)庫(kù)連接查詢(xún)的

SQL語(yǔ)句實(shí)現(xiàn)。其他應(yīng)用類(lèi)型的程序。1.3Java的工作原理

Java虛擬機(jī)(JVM)是軟件模擬的計(jì)算機(jī),可以在任何處理器上(無(wú)論是在計(jì)算機(jī)上還是在其它電子設(shè)備中)安全并且兼容的執(zhí)行保存在.class文件中的字節(jié)碼。java虛擬機(jī)的“機(jī)器碼”保存在.class文件中,有時(shí)也可以稱(chēng)之為字節(jié)碼文件。Java虛擬機(jī)的產(chǎn)生是為了跨平臺(tái)的應(yīng)用,任何具有Java虛擬機(jī)的計(jì)算機(jī)或電子設(shè)備上都可以運(yùn)行字節(jié)碼文件。java虛擬機(jī)中的java解釋器負(fù)責(zé)將字節(jié)碼文件解釋成為特定的機(jī)器碼進(jìn)行運(yùn)行。java源程序需要通過(guò)編譯器編譯成為.class文件(字節(jié)碼文件)。java程序的編譯和執(zhí)行過(guò)程如動(dòng)畫(huà)所示。圖1-3Java程序運(yùn)行機(jī)制

圖1-4windows下C語(yǔ)言運(yùn)行機(jī)制Java平臺(tái)工作原理1.3.1java程序的編譯和執(zhí)行過(guò)程1.4Java運(yùn)行平臺(tái)Java平臺(tái)由Java應(yīng)用編程接口(API)和Java虛擬機(jī)(JVM)構(gòu)成,如圖所示。這個(gè)平臺(tái)構(gòu)成了Java在不同計(jì)算機(jī)系統(tǒng)中編譯和運(yùn)行的環(huán)境。Java程序Java虛擬機(jī)JavaAPIs計(jì)算機(jī)系統(tǒng)Java平臺(tái)(安裝JDK)

1.4.1三種Java平臺(tái)簡(jiǎn)介

Sun公司要實(shí)現(xiàn)“編寫(xiě)一次,到處運(yùn)行”(Writeonce,runanywhere)的目標(biāo),就必須提供相應(yīng)的Java運(yùn)行平臺(tái)。目前,Java運(yùn)行平臺(tái)主要分為下列三個(gè)版本:1.4.1Java平臺(tái)簡(jiǎn)介

1、J2SEJava標(biāo)準(zhǔn)版或Java標(biāo)準(zhǔn)平臺(tái)。J2SE提供了標(biāo)準(zhǔn)的SDK開(kāi)發(fā)平臺(tái)(以前稱(chēng)為JDK開(kāi)發(fā)平臺(tái)),利用該平臺(tái)可以開(kāi)發(fā)Java桌面應(yīng)用程序和低端的服務(wù)器應(yīng)用程序,也可以開(kāi)發(fā)JavaApplet。2、J2EEJava企業(yè)版或Java企業(yè)平臺(tái),可以構(gòu)建企業(yè)級(jí)的服務(wù)應(yīng)用。J2EE平臺(tái)包含了J2SE平臺(tái),并增加了附加類(lèi)庫(kù),以便支持目錄管理、交易管理和企業(yè)級(jí)消息處理等功能。3、J2MEJava微型版或Java小型平臺(tái)。J2ME是一種很小的Java運(yùn)行環(huán)境,用于嵌入式的消費(fèi)產(chǎn)品中,如移動(dòng)電話、掌上電腦或其他無(wú)線設(shè)備等。1.4.2JDK的安裝與環(huán)境變量配置

什么是JDK(JavaDevelopmentKit)作為JDK實(shí)用程序,工具庫(kù)包含:Javac:編譯器Java:解釋器Appletviewer:小程序?yàn)g覽器Javadoc:根據(jù)java源碼及說(shuō)明語(yǔ)句生成HTML文檔Jdb:java調(diào)試器Javah:產(chǎn)生可以調(diào)用java過(guò)程的C過(guò)程,或者建立能被java調(diào)用的C過(guò)程的頭文件Jabap:java反匯編器,顯示編譯類(lèi)文件中的可訪問(wèn)功能和數(shù)據(jù),同時(shí)顯示字節(jié)代碼的含義。Java平臺(tái)可從網(wǎng)站免費(fèi)下載,該網(wǎng)站上提供了免費(fèi)的Java開(kāi)發(fā)工具集(JavaDevelopersKits,簡(jiǎn)稱(chēng)JDK),我們可以在這里下載適合于我們計(jì)算機(jī)操作系統(tǒng)的JDK,利用這些工具來(lái)開(kāi)發(fā)Java程序。最新版本為JDK1.8/javase/downloads/index.jsp1.4.3JDK目錄結(jié)構(gòu)bin目錄lib目錄jre目錄demo目錄src.zip1.4.4設(shè)置環(huán)境變量找不到j(luò)avac工具程序必須告訴操作系統(tǒng),應(yīng)該到哪些目錄下嘗試找到您所想使用的工具程序---設(shè)定系統(tǒng)變量中的

Path環(huán)境變量1.4.4設(shè)置環(huán)境變量Javac在運(yùn)行的時(shí)候,需要一些類(lèi)庫(kù)的支持,到哪里去尋找這些類(lèi)庫(kù)呢?---設(shè)定系統(tǒng)變量中的

Classpath環(huán)境變量安裝JDK,設(shè)置環(huán)境變量:<CLASSPATH>

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar;<PATH>

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;<JAVA_HOME>

C:\ProgramFiles\Java\jdk1.5.0_07;1.5Java應(yīng)用程序分類(lèi)

使用J2SE開(kāi)發(fā)的程序分為兩種,一種稱(chēng)為Java應(yīng)用程序(即Application應(yīng)用程序),另一種稱(chēng)為Applet小應(yīng)用程序。Java應(yīng)用程序可以在安裝了Java標(biāo)準(zhǔn)平臺(tái)的任何計(jì)算機(jī)上運(yùn)行。也就是說(shuō),用Java標(biāo)準(zhǔn)平臺(tái)編譯得到的字節(jié)碼文件,可以正確地運(yùn)行在任何具有Java標(biāo)準(zhǔn)平臺(tái)的計(jì)算機(jī)上。運(yùn)行JavaApplet并不需要安裝Java標(biāo)準(zhǔn)平臺(tái),JavaApplet可以由支持Java的瀏覽器直接運(yùn)行,該瀏覽器必須含有相應(yīng)的Java虛擬機(jī)。1.5.1Application應(yīng)用程序

開(kāi)發(fā)一個(gè)Java應(yīng)用程序需經(jīng)過(guò)三個(gè)步驟:

(1)編寫(xiě)源文件

(2)編譯源文件生成字節(jié)碼

(3)加載運(yùn)行字節(jié)碼1.5.1Application應(yīng)用程序

[例1-1]classA{voidf(){System.out.println("IamA");}}classB{}publicclassHello{publicstaticvoidmain(Stringargs[]){System.out.println("你好,很高興學(xué)習(xí)Java");Aa=newA();a.f();}}代碼輸入完畢后,將其保存成一個(gè)文件,取名為Hello.java。并存放到一個(gè)指定的目錄中去(如F:\Chapter01\code)??梢园l(fā)現(xiàn)目錄F:\Chapter01\code中有一個(gè)文件,名字為Hello.java,這就是我們剛才保存的源代碼文件。1.5.1JavaApplication程序

一個(gè)Java程序的基本框架結(jié)構(gòu):Java程序由一個(gè)或多個(gè)獨(dú)立的類(lèi)組成,但其中必須有一個(gè)公有類(lèi)(如:MyJavaApplication),而且源代碼文件必須與這個(gè)公有類(lèi)的名字相同(如:MyJavaApplication.java)。Java的類(lèi)可以由一個(gè)或多個(gè)方法組成,其中公有類(lèi)中的main方法可用作程序運(yùn)行的入口。//TheFirstJavaProgrampublicclassMyJavaApplication{publicstaticvoidmain(Stringargs[]){System.out.println(“Hello,JavaWorld!

");}}程序頭的注釋HelloWorld類(lèi)main方法修飾符方法頭方法體方法名參數(shù)返回類(lèi)型本程序的作用是輸出下面一行信息:

Hello,JavaWorld!

在一個(gè)JavaApplication應(yīng)用程序中,一定要有一個(gè)類(lèi)包含main方法。而在本范例中,首先用保留字class來(lái)聲明一個(gè)新的類(lèi),其類(lèi)名為MyJavaApplication

,它是一個(gè)公共類(lèi)(public)。整個(gè)類(lèi)定義由大括號(hào){}括起來(lái)。在該類(lèi)中定義了一個(gè)main方法,這個(gè)方法共有三個(gè)修飾語(yǔ),其意義分別如下:(1)public:表示這個(gè)類(lèi)的main方法可以被所有的對(duì)象使用。(2)static:指明該方法是一個(gè)類(lèi)方法,它可以通過(guò)類(lèi)名直接調(diào)用,表示main是屬于這個(gè)類(lèi)所使用的方法,我們將之稱(chēng)為“靜態(tài)方法”。

(3)void:表示main方法執(zhí)行后不會(huì)傳回任何值。這一點(diǎn)是重要的,因?yàn)镴ava編程語(yǔ)言要進(jìn)行謹(jǐn)慎的類(lèi)型檢查,包括檢查調(diào)用的方法確實(shí)返回了這些方法所聲明的類(lèi)型。

對(duì)于一個(gè)應(yīng)用程序來(lái)說(shuō),main方法是必需的,而且必須按照如上的格式來(lái)定義。Java解釋器在沒(méi)有生成任何實(shí)例的情況下,以main作為入口來(lái)執(zhí)行程序。Java程序中可以定義多個(gè)類(lèi),每個(gè)類(lèi)中可以定義多個(gè)方法,但是最多只能有一個(gè)公共類(lèi),main方法也只能有一個(gè),作為程序的入口。main方法定義中,括號(hào)中的Stringargs[]是傳遞給main方法的參數(shù),參數(shù)名為args,它是String類(lèi)的一個(gè)實(shí)例。參數(shù)可以為0個(gè)或多個(gè),每個(gè)參數(shù)用“類(lèi)名

參數(shù)名”來(lái)指定,多個(gè)參數(shù)間用逗號(hào)分隔。

對(duì)于本程序,還有以下值得注意的地方:(1)在main方法中,只有一條語(yǔ)句:

System.out.println("Hello,JavaWorld!");

它用來(lái)實(shí)現(xiàn)字符串的輸出,這條語(yǔ)句實(shí)現(xiàn)與C語(yǔ)言中的printf語(yǔ)句相同的功能。這里實(shí)際上是利用Java應(yīng)用編程接口(API)向控制臺(tái)打印輸出一行文字。API中已經(jīng)有了可以使用的控制臺(tái)打印功能,我們只需要提供要打印的文字。

這行程序所做的事是使用由System類(lèi)的out成員引用的PrintStream類(lèi)的out對(duì)象的println方法,將字串Hello,JavaWorld!打印到標(biāo)準(zhǔn)輸出上。

(2)語(yǔ)句

System.out.println("Hello,JavaWorld!");

的最后有一個(gè)分號(hào)(;),在Java編程語(yǔ)言中,一個(gè)“;”代表一個(gè)語(yǔ)句的結(jié)束。例如語(yǔ)句

totals=a+b+c+d+e+f+g;與語(yǔ)句

total=a+b+c+d+e+f+g;是等價(jià)的。(3)在程序中出現(xiàn)了大括號(hào)(“{”和“}”),它們是成對(duì)出現(xiàn)的,以{}為邊界的語(yǔ)句集合稱(chēng)為一個(gè)塊(block)。語(yǔ)句塊可被嵌套,在本例中,MyJavaApplication類(lèi)是一個(gè)語(yǔ)句塊;MyJavaApplication類(lèi)由main方法構(gòu)成,main這個(gè)方法也是一個(gè)語(yǔ)句塊,它是一個(gè)獨(dú)立單元,單元本身又作為類(lèi)MyJavaApplication塊中一部分。(4)為了增強(qiáng)程序的可讀性,在程序中有多處空格,這不影響程序的執(zhí)行。

Java程序中允許任意多的空白。

(5)在本程序中第一行“//”后的內(nèi)容為注釋?zhuān)M(jìn)行編譯時(shí),這一行的從“//”開(kāi)始的所有內(nèi)容會(huì)被忽略。

Java里有兩種類(lèi)型的注釋。第一種是傳統(tǒng)的、C語(yǔ)言風(fēng)格的注釋?zhuān)菑腃++繼承而來(lái)的。這些注釋用一個(gè)“/*”起頭,隨后是注釋內(nèi)容,并可跨越多行,最后用一個(gè)“*/”結(jié)束;第二種類(lèi)型的注釋也起源于C++,這種注釋叫作“單行注釋”,以一個(gè)“//”起頭,表示這一行的從“//”開(kāi)始的所有內(nèi)容都是注釋?zhuān)@種類(lèi)型的注釋更常用,因?yàn)樗鼤?shū)寫(xiě)時(shí)更方便。(6)程序名為MyJavaApplication.java,和公共類(lèi)的類(lèi)名相同(包括大小寫(xiě)都一致,唯一不同的地方就是程序名有擴(kuò)展名.java而類(lèi)名沒(méi)有擴(kuò)展名),這是因?yàn)镴ava解釋器要求公共類(lèi)必須放在與其同名的文件中。字節(jié)碼的編譯生成程序必需轉(zhuǎn)換為Java虛擬機(jī)能夠理解的形式,這樣,任何安裝有Java虛擬機(jī)的計(jì)算機(jī)就可以解釋并運(yùn)行該程序。編譯Java程序是指:提取程序文件中程序員可讀的文本(亦稱(chēng)源代碼)并把它轉(zhuǎn)換成字節(jié)碼,字節(jié)碼是提供給Java虛擬機(jī)的與平臺(tái)無(wú)關(guān)的指令。Java編譯器是通過(guò)外殼操作系統(tǒng)中的命令行進(jìn)行調(diào)用的,下面對(duì)該程序進(jìn)行編譯,命令行調(diào)用命令為:

C:\>javacMyJavaApplication.java

其中,“javac”是JDK工具包中提供的Java語(yǔ)言編譯器,輸出結(jié)果為Java字節(jié)碼。編譯的結(jié)果是生成字節(jié)碼文件MyJavaApplication.class。需要留意的是,使用javac這個(gè)指令并沒(méi)有打開(kāi)Java編譯器里的偵錯(cuò)功能,所以你無(wú)法在它編譯出來(lái)的字節(jié)碼文件中找到與程序偵錯(cuò)有關(guān)的數(shù)據(jù)信息。除非你用另外一個(gè)指令javac-g,它的編譯結(jié)果除了字節(jié)碼文件外還會(huì)附帶一些有用的除錯(cuò)資料,可提供程序偵錯(cuò)時(shí)用。事實(shí)上“javac”提供了一些指令參數(shù)供使用者編譯時(shí)選用,各個(gè)參數(shù)代表不同的功能,以下是常用的幾個(gè):

(1)-calsspath<path>:告知編譯器何處去引用其他的類(lèi)型對(duì)象。這個(gè)設(shè)定會(huì)取代你原先在開(kāi)機(jī)執(zhí)行文件里已說(shuō)明過(guò)的環(huán)境變量CLASSPATH。

(2)-d<directory>:指示編譯器將編譯后的執(zhí)行碼存放在特定的目錄下,在這里要使用絕對(duì)路徑。

(3)-g:?jiǎn)?dòng)偵錯(cuò)功能。字節(jié)碼的解釋與運(yùn)行現(xiàn)在可以運(yùn)行該程序了,用Java解釋器來(lái)運(yùn)行該字節(jié)碼文件:

C:\>javaMyJavaApplication

其中,java是JDK工具包中提供的java解釋器。我們需留意的是,在這個(gè)指令行中文件名稱(chēng)不須附上擴(kuò)展名“.class”,因?yàn)榻忉屍鞅旧頃?huì)自行加入。Java程序的編輯、編譯和運(yùn)行過(guò)程

編輯程序代碼HelloWorld.javajavac生成出錯(cuò)信息Yes編譯程序代碼javacHelloWorld.javaHelloWorld.class解釋執(zhí)行字節(jié)碼javaHelloWorld有編譯錯(cuò)誤嗎?NoJava程序編譯通過(guò),會(huì)自動(dòng)生成一個(gè)包含了這個(gè)源程序字節(jié)碼的同名.class文件。該文件可以通過(guò)Java虛擬機(jī)運(yùn)行。傳統(tǒng)語(yǔ)言與java的不同運(yùn)行機(jī)制源代碼目標(biāo)碼可執(zhí)行代碼操作系統(tǒng)編譯連接運(yùn)行源代碼字節(jié)碼Java解釋器編譯解釋執(zhí)行注意Java源代碼編譯生成的字節(jié)碼必須運(yùn)行在java虛擬機(jī)的在os之外的軟件平臺(tái)。運(yùn)行java程序時(shí),首先應(yīng)該啟動(dòng)虛擬機(jī),由它來(lái)負(fù)責(zé)解釋執(zhí)行java字節(jié)碼。這樣,利用java虛擬機(jī)可以把java字節(jié)碼程序跟具體的軟硬件平臺(tái)分開(kāi)。在Java中,有兩種類(lèi)型的程序:應(yīng)用程序(Application)和小應(yīng)用程序(Applet)。JavaApplet可以被HTML頁(yè)面引用,并可以在支持Java的瀏覽器中執(zhí)行,可以說(shuō)Applet具有“激活因特網(wǎng)”的強(qiáng)大功能。在本節(jié)將講述Applet的工作原理以及如何編寫(xiě)Applet程序。1.5.2JavaApplet1Applet的基本工作原理

Applet的基本工作原理如圖所示。第一個(gè)Applet小程序

1源程序的編輯與編譯【例】第一個(gè)JavaApplet程序

Boy.java2代碼嵌入

Applet中沒(méi)有main方法作為Java解釋器的入口,必須編寫(xiě)HTML文件,把該Applet嵌入其中,然后用appletviewer來(lái)運(yùn)行,或在支持Java的瀏覽器上運(yùn)行。

3Applet的運(yùn)行

在控制臺(tái)鍵入命令:

C:\>appletviewerBoy.htm

也可以直接在瀏覽器中運(yùn)行或者使用TextPad,Eclipse等工具。(1)publicvoidinit()該方法用于Applet的初始化。當(dāng)Applet被第一次加載時(shí),該方法會(huì)被自動(dòng)調(diào)用。在這個(gè)方法中,可以做一些必要的初始化工作,這些內(nèi)容包括是創(chuàng)建和初始化程序運(yùn)行所需要的對(duì)象實(shí)例,把圖形或字體載入內(nèi)存,處理PARAM參數(shù)等。

(2)publicvoidstart()該方法用來(lái)啟動(dòng)瀏覽器運(yùn)行Applet的主線程。調(diào)用init方法將Applet的初始化工作完成之后,start方法會(huì)被自動(dòng)調(diào)用;當(dāng)用戶(hù)刷新包含Applet的頁(yè)面或者從其它頁(yè)面返回包含Applet的頁(yè)面時(shí),start方法也會(huì)被自動(dòng)調(diào)用。也就是說(shuō),start方法可以被多次調(diào)用,這與init方法是有區(qū)別的?;谶@樣的原因,可以把只調(diào)用一次的代碼放在init方法中,而不能放在start方法中。

(3)publicvoidstop()該方法在用戶(hù)離開(kāi)包含Applet的頁(yè)面時(shí)會(huì)被自動(dòng)調(diào)用。和start方法一樣,stop方法也可以被多次調(diào)用。該方法的作用是,當(dāng)用戶(hù)離開(kāi)包含Applet的頁(yè)面時(shí),停止一些耗費(fèi)系統(tǒng)資源的活動(dòng),如播放動(dòng)畫(huà)等。如果在Applet中沒(méi)有動(dòng)畫(huà)、音樂(lè)文件播放,那么通??梢圆皇褂眠@個(gè)方法。(4)publicvoiddestroy()當(dāng)用戶(hù)正常關(guān)閉瀏覽器時(shí),瀏覽器會(huì)調(diào)用destroy方法。該方法用于回收系統(tǒng)資源,如回收?qǐng)D形用戶(hù)界面的系統(tǒng)資源、關(guān)閉連接等。至于Applet實(shí)例本身,會(huì)由瀏覽器來(lái)負(fù)責(zé)從內(nèi)存中清除,不需要在destroy方法中來(lái)清除。

Applet類(lèi)提供的四個(gè)方法init、start、stop和destroy分別對(duì)應(yīng)了Applet的初始化、啟動(dòng)、暫停直到消亡的各個(gè)階段。

(5)publicvoidpaint()

paint()方法主要作用是在Applet的界面中顯示文字、圖形和其他界面元素。它也是瀏覽器可自動(dòng)調(diào)用的方法,導(dǎo)致瀏覽器調(diào)用paint的事件主要有:1Applet被啟動(dòng)后自動(dòng)調(diào)用paint重新描繪自己的界面2.Applet所在瀏覽器窗口改變時(shí),要求重畫(huà)界面3.Applet的其他相關(guān)方法被調(diào)用,如repaint()。圖說(shuō)明了Applet的生命周期和對(duì)應(yīng)的方法

例LifeCyle

Applet與Application的區(qū)別

(1)JavaApplet程序是在WWW瀏覽器環(huán)境下運(yùn)行,即不是完整獨(dú)立運(yùn)行程序;(2)運(yùn)行JavaApplet程序的解釋器不是獨(dú)立的軟件,而是嵌在WWW瀏覽器中作為瀏覽器軟件的一部分。(3)JavaApplet程序中不需要有main方法,但是JavaApplet程序的主類(lèi)必須是類(lèi)庫(kù)中已定義好的類(lèi)Applet或JApplet的子類(lèi)。(4)JavaApplet程序可以直接利用瀏覽器或AppletViewer提供的圖形用戶(hù)界面,而JavaApplication程序則必須另外書(shū)寫(xiě)專(zhuān)用代碼來(lái)營(yíng)建自己的圖形界面。2.5

溫馨提示

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

評(píng)論

0/150

提交評(píng)論