Java語言程序設(shè)計(jì)基礎(chǔ)教程(上)課件_第1頁
Java語言程序設(shè)計(jì)基礎(chǔ)教程(上)課件_第2頁
Java語言程序設(shè)計(jì)基礎(chǔ)教程(上)課件_第3頁
Java語言程序設(shè)計(jì)基礎(chǔ)教程(上)課件_第4頁
Java語言程序設(shè)計(jì)基礎(chǔ)教程(上)課件_第5頁
已閱讀5頁,還剩286頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Java程序設(shè)計(jì)基礎(chǔ)教程第1頁,共291頁。第1章Java 程序設(shè)計(jì)概述第2章Java基本的程序設(shè)計(jì)結(jié)構(gòu) 第3章類和對(duì)象第4章繼承、接口和內(nèi)部類第5章Java API 第6章Java 程序設(shè)計(jì)概述第7章多線程第8章文件和流 第9章異常處理 第10章Java網(wǎng)絡(luò)編程 第11章Java Applet基礎(chǔ) 第12章常見數(shù)據(jù)結(jié)構(gòu)的Java實(shí)現(xiàn)第13章Java數(shù)據(jù)庫連接-JDBC 第14章Java多媒體編程:圖形、圖像和聲音 第2頁,共291頁。第一章Java 程序設(shè)計(jì)概述1.1 機(jī)器語言、匯編語言和高級(jí)語言1.2 Java 語言概述1.3 Java平臺(tái)和主要應(yīng)用方向1.4 Java的垃圾回收與代碼安全

2、檢查機(jī)制1.5 典型的Java開發(fā)環(huán)境1.6 Java編程示例1.7 反編譯工具的介紹1.8 Java JDK 6 新功能介紹第3頁,共291頁。1.1機(jī)器語言、匯編語言和高級(jí)語言計(jì)算機(jī)程序設(shè)計(jì)語言的種類非常多, 總的可以分成機(jī)器語言,匯編語言,高級(jí)語言三大類。機(jī)器語言是計(jì)算機(jī)唯一能接受和執(zhí)行的語言,與硬件緊密相連。機(jī)器語言由二進(jìn)制碼組成,每個(gè)二進(jìn)制碼是一條指令。一條指令通常由兩個(gè)部分組成:操作碼 + 操作數(shù)。操作碼規(guī)定了計(jì)算機(jī)要執(zhí)行的基本操作;操作數(shù)規(guī)定了操作對(duì)象或操作對(duì)象的地址。第4頁,共291頁。匯編語言(Assembly Language)是面向機(jī)器的程序設(shè)計(jì)語言。用匯編語言編寫的程序

3、叫匯編語言源程序,計(jì)算機(jī)無法執(zhí)行。必須用匯編程序把它翻譯成機(jī)器語言目標(biāo)程序,計(jì)算機(jī)才能執(zhí)行。這個(gè)翻譯過程稱為匯編過程。匯編語言的長處在于編寫高效且需要對(duì)機(jī)器硬件精確控制的程序。匯編語言中,用助記符代替操作碼,用地址符號(hào)(Symbol)或標(biāo)號(hào)(Label)代替地址碼。這樣用符號(hào)代替機(jī)器語言的二進(jìn)制碼,就把機(jī)器語言變成了匯編語言。因此匯編語言亦稱為符號(hào)語言。第5頁,共291頁。機(jī)器語言和匯編語言都是面向機(jī)器的,高級(jí)語言是面向用戶的。由于匯編語言依賴于硬件體系,且助記符量大難記,于是人們又發(fā)明了更加易用的所謂高級(jí)語言。高級(jí)語言中的語法和結(jié)構(gòu)更類似普通英文,且由于遠(yuǎn)離對(duì)硬件的直接操作,使得一般人經(jīng)過學(xué)

4、習(xí)之后都可以編程。用高級(jí)語言編寫的程序叫做高級(jí)語言源程序,必須翻譯成機(jī)器語言目標(biāo)程序才能被計(jì)算機(jī)執(zhí)行。高級(jí)語言的翻譯有兩種方式:編譯方式和解釋方式。第6頁,共291頁。編譯方式:先由編譯程序把高級(jí)語言源程序翻譯成目標(biāo)程序,執(zhí)行時(shí)運(yùn)行目標(biāo)程序?,F(xiàn)在大多數(shù)的編程語言都是編譯型的,例如Visual C+、Visual Foxpro、Delphi等。解釋方式:在運(yùn)行高級(jí)語言源程序時(shí),由解釋程序?qū)υ闯绦蜻叿g邊執(zhí)行。經(jīng)典的Basic語言就是以解釋方式運(yùn)行的。第7頁,共291頁。1.2 Java 概述Java語言的產(chǎn)生Java語言的發(fā)展Java虛擬機(jī)及Java的跨平臺(tái)原理Java語言的關(guān)鍵特點(diǎn)第8頁,共2

5、91頁。Java 語言的產(chǎn)生Java是1995年6月由Sun公司引進(jìn)到我們這個(gè)世界的革命性的編程語言.1990年Sun公司成立了由James Gosling領(lǐng)導(dǎo)的開發(fā)小組,開始致力于開發(fā)一種可移植的、跨平臺(tái)的語言,該語言能生成正確運(yùn)行于各種操作系統(tǒng)、各種CPU芯片上的代碼。他們的精心專研和努力促成了Java語言的誕生。 第9頁,共291頁。Java語言是一門很優(yōu)秀的語言,具有面向?qū)ο?、與平臺(tái)無關(guān)、安全、穩(wěn)定和多線程等優(yōu)良特性,是目前軟件設(shè)計(jì)中極為健壯的編程語言.Java語言的出現(xiàn)是源于對(duì)獨(dú)立于平臺(tái)語言的需要,即這種語言編寫的程序不會(huì)因?yàn)樾酒淖兓l(fā)生無法運(yùn)行或出現(xiàn)運(yùn)行錯(cuò)誤。目前,隨著網(wǎng)絡(luò)的迅

6、速發(fā)展,Java語言的優(yōu)勢(shì)越顯明顯,Java已經(jīng)成為網(wǎng)絡(luò)時(shí)代一門非常重要的語言。第10頁,共291頁。Java 語言的發(fā)展微軟公司總裁比爾.蓋茨先生認(rèn)為,“Java語言是長時(shí)間以來最卓越的程序設(shè)計(jì)語言”。Java語言已經(jīng)成為目前最流行的網(wǎng)絡(luò)編程語言到2005年,我國對(duì)Java技術(shù)人員的需求量將高達(dá)20萬余人,許多大學(xué)紛紛開設(shè)Java課程,Java正逐步成為世界上程序員最多的編程語言。第11頁,共291頁。Java虛擬機(jī)及Java的跨平臺(tái)原理Java虛擬機(jī)(Java Virtual Machine) 簡稱JVM,Java虛擬機(jī)是一個(gè)想象中的機(jī)器,在實(shí)際的計(jì)算機(jī)上通過軟件模擬來實(shí)現(xiàn)。Java虛擬機(jī)

7、有自己想象中的硬件,如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。Java語言的一個(gè)非常重要的特點(diǎn)就是與平臺(tái)的無關(guān)性。而使用Java虛擬機(jī)是實(shí)現(xiàn)這一特點(diǎn)的關(guān)鍵。第12頁,共291頁。Java語言的關(guān)鍵特點(diǎn)簡單性平臺(tái)無關(guān)性面向?qū)ο笮园踩苑植际蕉嗑€程動(dòng)態(tài)性第13頁,共291頁。1.3 Java平臺(tái)和主要應(yīng)用方向某種意義上來說,Java不僅是編程語言,還是一個(gè)開發(fā)平臺(tái)。Java技術(shù)給程序員提供了許多工具編譯器、解釋器、文檔生成器和文件打包工具等同時(shí)Java還是一個(gè)程序發(fā)布平臺(tái)。兩種主要的“發(fā)布環(huán)境”首先是Java運(yùn)行時(shí)環(huán)境(java runtime environment,簡稱JRE)包含了完整

8、的類文件包;其次,許多主要的瀏覽器都提供了Java解釋器和運(yùn)行時(shí)環(huán)境。第14頁,共291頁。Java技術(shù)的平臺(tái)架構(gòu)包括以下三個(gè)方面J2SE(Java 2 Standard Edition):標(biāo)準(zhǔn)版主要目的是為臺(tái)式機(jī)和工作站提供一個(gè)開發(fā)和運(yùn)行的平臺(tái)。包括標(biāo)準(zhǔn)的Java 2 SDK、工具、運(yùn)行時(shí)環(huán)境和API,用Java程序設(shè)計(jì)語言編寫、部署和運(yùn)行Applet和應(yīng)用程序的開發(fā)人員,是桌面開發(fā)和低端商務(wù)應(yīng)用的解決方案。J2EE(Java 2 Enterprise Edition):企業(yè)版主要目的是為企業(yè)計(jì)算提供一個(gè)應(yīng)用服務(wù)器的運(yùn)行和開發(fā)平臺(tái)。J2EE本身是一個(gè)開放的標(biāo)準(zhǔn),任何軟件廠商都可以推出自己的符

9、合J2EE標(biāo)準(zhǔn)的產(chǎn)品,通過基于標(biāo)準(zhǔn)化模塊組件和一整套的相關(guān)服務(wù)能夠自動(dòng)處理應(yīng)用程序行為的許多細(xì)節(jié),從而大大簡化了多層企業(yè)應(yīng)用程序的構(gòu)造和部署。IBM、Oracle、BEA、HP等29家已經(jīng)推出了自己的產(chǎn)品,其中尤以BEA公司的WebLogic產(chǎn)品和IBM公司的WebSphare最為著名。第15頁,共291頁。J2ME(Java 2 Micro Edition):小型版主要是面向消費(fèi)電子產(chǎn)品,為消費(fèi)電子產(chǎn)品提供一個(gè)Java的運(yùn)行平臺(tái),使得Java程序能夠在手機(jī)、機(jī)頂盒、PDA等產(chǎn)品上運(yùn)行包含高度優(yōu)化的Java運(yùn)行時(shí)環(huán)境,致力于電子消費(fèi)產(chǎn)品和嵌入式設(shè)備的解決方案。第16頁,共291頁。1.4 Ja

10、va的垃圾回收與代碼安全檢查機(jī)制在Java程序的執(zhí)行過程中,部分內(nèi)存在使用過后就處于廢棄狀態(tài),如果不及時(shí)進(jìn)行無用內(nèi)存的回收,內(nèi)存會(huì)越占越多,導(dǎo)致內(nèi)存泄漏,進(jìn)而導(dǎo)致系統(tǒng)崩潰。在C語言中是由程序員人為進(jìn)行內(nèi)存回收的,程序員需要在編寫程序的時(shí)候把不再使用的對(duì)象內(nèi)存釋放掉;但是這種人為的管理內(nèi)存釋放的方法卻往往由于程序員的疏忽而致使內(nèi)存無法回收,同時(shí)也增加了程序員的工作量。第17頁,共291頁。在Java運(yùn)行環(huán)境中,始終存在著一個(gè)系統(tǒng)級(jí)的線程,專門跟蹤內(nèi)存的使用情況,定期檢測(cè)出不再使用的內(nèi)存,并進(jìn)行自動(dòng)回收,避免了內(nèi)存的泄露,也減輕了程序員的工作量。第18頁,共291頁。字節(jié)碼的執(zhí)行需要經(jīng)過三個(gè)步驟1

11、)首先由類裝載器(class loader)負(fù)責(zé)把類文件(.class文件)加載到Java虛擬機(jī)中,在此過程需要檢驗(yàn)該類文件是否符合類文件規(guī)范;2)其次字節(jié)碼校驗(yàn)器(byte code verifier)檢查該類文件的代碼中是否存在著某些非法操作,例如Applet程序中寫本機(jī)文件系統(tǒng)的操作;3)如果字節(jié)碼校驗(yàn)器檢驗(yàn)通過,由Java解釋器負(fù)責(zé)把該類文件解釋成為機(jī)器碼進(jìn)行執(zhí)行。第19頁,共291頁。Java虛擬機(jī)采用的是“沙箱”運(yùn)行模式,即把Java程序的代碼和數(shù)據(jù)都限制在一定內(nèi)存空間里執(zhí)行,不允許程序訪問該內(nèi)存空間外的內(nèi)存,如果是Applet程序,還不允許訪問客戶端機(jī)器的文件系統(tǒng)。Java致力于

12、檢查程序在編譯和運(yùn)行時(shí)的錯(cuò)誤。類型檢查幫助檢查出許多開發(fā)早期出現(xiàn)的錯(cuò)誤。Java自已操縱內(nèi)存減少了內(nèi)存出錯(cuò)的可能性。Java還實(shí)現(xiàn)了真數(shù)組,避免了覆蓋數(shù)據(jù)的可能。這些功能特征大大提高了開發(fā)Java應(yīng)用程序的周期。Java提供: Null指針檢測(cè)、 數(shù)組邊界檢測(cè)、 異常出口、 Byte code校驗(yàn)。第20頁,共291頁。1.5典型的Java開發(fā)環(huán)境Sun公司為全世界使用Java進(jìn)行開發(fā)的人員提供了一套免費(fèi)的開發(fā)工具集,取名為JDK(Java Developers Kits),它不僅是Java的開發(fā)平臺(tái),也是Java的運(yùn)行平臺(tái)。學(xué)習(xí)Java必須從J2SE開始目前Sun公司已發(fā)布了SDK的1.5測(cè)

13、試版本(beta版),可以登錄到Sun公司的網(wǎng)站:,免費(fèi)下載SDK1.5(例如:jdk-1_5_0-beta2-windows-i586.exe) 第21頁,共291頁。下載、安裝和了解JDK1)下載安裝JDK的第一步是下載安裝文件,這里要下載的是Sun公司的J2SE 5.0 Development Kits,下載的網(wǎng)址是:/j2se/1.5.0/download.jsp 2)安裝JDK下載后的JDK安裝文件名稱是jdk-1_5_0_06- windows-i586-p.exe,雙擊這個(gè)文件可以開始程序的安裝。開始的第一步是同意使用條款,接著則開始安裝JDK。 第22頁,共291頁。(3)了解

14、JDK默認(rèn)情況下, JDK與公用JRE各安裝至C:Program FilesJavajdk1.5.0_06及C:Program FilesJavajre1.5.0_06。公用JRE主要是為開發(fā)好的Java程序提供執(zhí)行的平臺(tái)。其實(shí)JDK本身也有自己的JRE,這個(gè)JRE位于JDK安裝目錄的jre目錄下。以上面的安裝為例,就是在C:Program FilesJavajdk1.5.0_06jre中,JDK本身所附的JRE主要是開發(fā)Java程序時(shí)做測(cè)試之用。與公用JRE的主要差別在于JDK本身所附的JRE比公用JRE多了個(gè)server的VM(Virtual Machine)執(zhí)行選項(xiàng)。第23頁,共291頁

15、。JDK的安裝目錄下有如下內(nèi)容: bin目錄:提供的是JDK的工具程序,包括javac、java、javadoc、appletviewer等程序。demo目錄:一些使用Java編寫好的范例程序。jre目錄:JDK自己附帶的JRE。lib目錄:工具程序?qū)嶋H上會(huì)使用的Java工具類(例如,javac工具程序?qū)嶋H上會(huì)去使用tools.jar中的com/sun/tools/javac/Main類)。src.zip:Java提供的API類的源代碼壓縮文件。如果需要查看API的某些功能是如何實(shí)現(xiàn)的,可以查看這個(gè)文件中的源代碼內(nèi)容。JDK安裝目錄下的bin目錄非常重要。因?yàn)榫帉懲闖ava程序之后,無論是編譯

16、或執(zhí)行程序,都會(huì)使用到bin目錄下所提供的工具程序。 第24頁,共291頁。系統(tǒng)環(huán)境ClassPath 值的設(shè)置 SDK的安裝目錄的jre文件夾中包含著Java應(yīng)用程序運(yùn)行時(shí)所需要的Java類庫,這些類庫被包含在jrelib目錄下的壓縮文件rt.jar中 第25頁,共291頁。系統(tǒng)環(huán)境變量Path 值的設(shè)置 SDK平臺(tái)提供的Java編譯器(javac.exe)和Java解釋器(java.exe)位于Java安裝目錄的bin文件夾中,為了能在任何目錄中使用編譯器和解釋器,應(yīng)在系統(tǒng)特性中設(shè)置Path。對(duì)于Windows2000、Windows2003、Windows XP,用鼠標(biāo)右鍵點(diǎn)擊“我的電腦

17、”,彈出菜單,然后選擇屬性,彈出“系統(tǒng)特性”對(duì)話框,再單擊該對(duì)話框中的高級(jí)選項(xiàng),然后點(diǎn)擊按鈕“環(huán)境變量”,添加如下的系統(tǒng)環(huán)境變量第26頁,共291頁。測(cè)試環(huán)境變量寫一個(gè)簡單的Java程序,測(cè)試一下環(huán)境設(shè)置是否正確【例1-1】一個(gè)簡單的Java程序。public class HelloWorld public static void main(String argv )System.out.println(你好!我的第一個(gè)Java程序!); 第27頁,共291頁。注意:1Java的源文件必須以擴(kuò)展名.java結(jié)束;2Java主文件名與類名稱必須一致,區(qū)分大小寫;3 Java程序的類名稱是指cla

18、ss關(guān)鍵詞后的名稱。就這個(gè)例子而言,也就是HelloWorld,該名稱必須與HelloWorld.java的主文件名(HelloWorld)一致。4注意每個(gè)字母的大小寫,Java程序中會(huì)區(qū)分字母的大小寫,System與system對(duì)Java程序來說是不一樣的名稱。第28頁,共291頁。C:cd java_work1接著使用javac工具程序來編譯.java文件,命令如下:C:java_work1javac HelloWorld.java如果編譯順利成功,則在HelloWorld.java所在的目錄,會(huì)出現(xiàn)一個(gè)HelloWorld.class文件,這是已經(jīng)編譯完成的Java字節(jié)碼文件。使用jav

19、a工具程序來執(zhí)行它,執(zhí)行方式如下:C:java_work1java HelloWorldJava工具程序會(huì)根據(jù)指定的類名稱,實(shí)際加載.class的文件,以上例來說,就是載入HelloWorld.class并執(zhí)行。第29頁,共291頁。Eclipse和MyEclipse 1Eclipse 是什么? Eclipse是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Tools,JDT)。雖然大多數(shù)用戶很樂于將 Eclipse

20、當(dāng)作 Java IDE 來使用,但 Eclipse 的目標(biāo)不僅限于此。Eclipse還包括插件開發(fā)環(huán)境(Plug-in Development Environment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展Eclipse的軟件開發(fā)人員,因?yàn)樗试S構(gòu)建與Eclipse環(huán)境無縫集成的工具。由于Eclipse中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場(chǎng)所。 第30頁,共291頁。2MyEclipse 是什么?簡單而言,MyEclipse是Eclipse的插件,也是一款功能強(qiáng)大的J2EE集成開發(fā)環(huán)境,支持代碼編寫、配

21、置、測(cè)試以及除錯(cuò)。最新版本是7.0,主要增加Matisse4 MyEclipse Gui Biulder的整合,Ajax/Web 2.0 開發(fā)工具。 第31頁,共291頁。1.6 Java編程示例Java程序分為Java Application(Java 應(yīng)用程序)和Java Applet(Java小應(yīng)用程序)兩種類型。第32頁,共291頁。1.6.1 第一個(gè)Java Application【例1-2】第一個(gè)Java Application程序MyApplication.java。import java.util.*;/* * 下面我們用到了Date和Properties這兩個(gè)類,是屬于Jav

22、a.util這個(gè)包的。 * 而System和Runtime這兩個(gè)類,是屬于Java.lang這個(gè)包的。 */public class MyApplication public static void main(String args) System.out.println(new Date();/ 在命令行下面打印出日期Properties p = System.getProperties();/ 獲得系統(tǒng)的Properties對(duì)象pp.list(System.out);/ 在命令行下打印出p中的各個(gè)系統(tǒng)變量的值System.out.println(- Memory Usage:);/ 打印一

23、行字符串-Memory UsageRuntime rt = Runtime.getRuntime();/ 獲得系統(tǒng)的Runtime對(duì)象rtSystem.out.println(Total Memory= + rt.totalMemory()+ Free Memory = + rt.freeMemory();/ 打印總內(nèi)存大小、打印空閑內(nèi)存大小第33頁,共291頁。System.out.println(new Date(); 打印語句的參數(shù)是一個(gè)日期對(duì)象Date,而創(chuàng)建Date對(duì)象的目的就是把它的值發(fā)給println()語句。一旦這個(gè)語句執(zhí)行完畢,Date對(duì)象就沒用了,而后Java的垃圾回收機(jī)制

24、會(huì)將其收回。 第34頁,共291頁。第二行中調(diào)用了System.getProperties()方法。getProperties()是System類的一個(gè)靜態(tài)方法(static方法,關(guān)于類的靜態(tài)方法含義,我們會(huì)在第三章中介紹),由于它是“靜態(tài)”的,所以不必創(chuàng)建任何對(duì)象就可以通過類名直接調(diào)用該方法。在第三行中,Properties對(duì)象有一個(gè)名為list()的方法,它將自己的全部內(nèi)容都發(fā)給一個(gè)PrintStream對(duì)象,該對(duì)象作為list()方法的參數(shù)。 第35頁,共291頁。第四行和第六行是典型的打印語句,其中第六行通過運(yùn)算符“”的重載來連接多個(gè)字符串對(duì)象,在Java中只有當(dāng)“”運(yùn)算符作用于字符串

25、時(shí)才能夠進(jìn)行重載。仔細(xì)觀察下述語句: System.out.println(Total Memory= + rt.totalMemory()+ Free Memory = + rt.freeMemory();其中,totalMemory()和freeMemory()返回的是數(shù)值,并非String對(duì)象。第五行通過調(diào)用Runtime的getRuntime()方法創(chuàng)建了一個(gè)Runtime對(duì)象,該對(duì)象中包含了內(nèi)存等信息。 第36頁,共291頁。1.6.2 Java程序的編輯 Java程序的編輯可以使用任何一種文本編輯器,例如UltraEdit、Notepad、Wordpad甚至word,然后只要把編輯

26、好的文件存成后綴為.java的文件。當(dāng)然也可以用一些集成開發(fā)環(huán)境,例如Borland公司的JBuilder,IBM公司的Visualage for Java,Sun公司的NetBean,此外還有cafe、kawa等其它集成開發(fā)環(huán)境。 第37頁,共291頁。1.6.3運(yùn)行Java Application應(yīng)用程序 要編譯上述Java文件MyApplication.java,可以在“命令提示符”下進(jìn)行編譯,在命令行中敲入“javac MyApplication.java”。 當(dāng)編譯結(jié)束后,Java源文件中的每一個(gè)類都會(huì)生成相應(yīng)的.class 文件,例如上例就會(huì)生成一個(gè)MyApplication.cl

27、ass文件,而Java程序在執(zhí)行時(shí)調(diào)用的是.class 文件。在“命令提示符”下敲入“java MyApplication”進(jìn)行執(zhí)行。第38頁,共291頁。1.6.4第一個(gè)Java Applet 【例1-3】一個(gè)Java Applet程序,該程序保存在文件HelloApplet.java中。import java.awt.Graphics; /進(jìn)行顯示輸出時(shí),需要用到類Graphics的對(duì)象;import java.applet.Applet; /Applet類是所有的Java Applet的父類;/* * 給這個(gè)類取名為HelloApplet, * 因?yàn)樗械腶pplet程序都是Applet

28、類的子類。 */public class HelloApplet extends Applet public String s;public void init() s = new String(歡迎學(xué)習(xí)Java Applet!); / 生成一個(gè)字符串對(duì)象public void paint(Graphics g) g.drawString(s, 25, 25); / 在瀏覽器中坐標(biāo)為(25,25)的位置顯示字符串s第39頁,共291頁。Applet小應(yīng)用程序是從方法init()開始執(zhí)行的,在該方法中完成了對(duì)字符串s的初始化工作,而顯示功能是在方法paint()中執(zhí)行的。paint()方法是類A

29、pplet的一個(gè)成員方法,其參數(shù)是圖形對(duì)象Graphics g,通過調(diào)用對(duì)象g的drawString()方法就可以顯示輸出。 第40頁,共291頁。1.6.5運(yùn)行applet Applet程序也是一個(gè)類,其編譯方式與Java Application完全一樣。Applet的執(zhí)行方式與Application完全不同,Applet程序必須嵌入到html文件中才能夠執(zhí)行,因此必須編寫一個(gè)相應(yīng)的html文件。此處為HelloApplet.html,代碼中包含有applet標(biāo)記如下:然后可以通過JDK所提供的命令“appletviewer”,在“命令提示符”下敲入appletviewer HelloApp

30、let.html此時(shí)系統(tǒng)會(huì)彈出另外一個(gè)窗口運(yùn)行該applet程序,運(yùn)行結(jié)果如圖1-9所示。 第41頁,共291頁。圖1-9 Applet例子運(yùn)行結(jié)果第42頁,共291頁。1.7反編譯工具的介紹 使用SDK提供的反編譯器javap.exe可以將字節(jié)碼反編譯為源碼,查看源碼類中的public方法名字和public成員變量的名字,例如:javap java.awt.Button將列出Button中的public方法和public成員變量。下列命令javap private java.awt.Button將列出Button中的全部方法和成員變量。查看更多的參數(shù),可以執(zhí)行“javap -help”來顯示

31、。第43頁,共291頁。1.8 Java JDK 6 新功能介紹 2006年底,Sun 公司發(fā)布了 Java Standard Edition 6(Java SE 6)的最終正式版。跟Java SE 5相比,在性能方面有了很大的提升。 Java SE 6 在 Instrumentation 方面的新特性。在 Java SE 6 里面,instrumentation 包被賦予了更強(qiáng)大的功能:啟動(dòng)后的 instrument、本地代碼 instrument,以及動(dòng)態(tài)改變 classpath 等等。 Java SE 6 與 HTTP 相關(guān)的諸多新特性,這使得 Java SE 平臺(tái)本身對(duì)網(wǎng)絡(luò)編程,尤其是

32、基于 HTTP 協(xié)議的因特網(wǎng)編程,有了更加強(qiáng)大的支持。Java 管理擴(kuò)展(JMX) 架構(gòu)及其框架,以及在 Java SE 5 中新引入的 JMX API - java.lang.management 包,此 API 在 Java SE 6 中做了改進(jìn)。 第44頁,共291頁。JDK 6 中新增加的編譯器 API(JSR 199)。利用此 API,您可以在運(yùn)行時(shí)調(diào)用 Java 編譯器,可以編譯不同形式的源代碼文件,還可以采集編譯器的診斷信息。Java SE 6 在數(shù)據(jù)庫編程方面的新特性,包括嵌入在 JDK 中的 Java DB (Derby)和 JDBC 4.0 的一部分。Java SE 6 新

33、引入的對(duì) JSR 223 的支持,它旨在定義一個(gè)統(tǒng)一的規(guī)范,使得 Java 應(yīng)用程序可以通過一套固定的接口與各種腳本引擎交互,從而達(dá)到在 Java 平臺(tái)上調(diào)用各種腳本語言的目的。 Java SE 6 中提供的 XML 處理框架,以及在此框架之上結(jié)合注釋(Annotation) 技術(shù),所提供的強(qiáng)大的針對(duì) Web 服務(wù)的支持。第45頁,共291頁。1.9 練習(xí)思考題 1、Java運(yùn)行平臺(tái)包括三個(gè)版本,請(qǐng)選擇正確的三項(xiàng):( ) A. J2EEB.J2ME C. J2SE D.J2E2、 開發(fā)與運(yùn)行Java程序需要經(jīng)過的三個(gè)主要步驟為_、_和_。3、 如果一個(gè)Java Applet源程序文件只定義有一

34、個(gè)類,該類的類名為MyApplet,則類MyApplet必須是_類的子類并且存儲(chǔ)該源程序文件的文件名為_。第46頁,共291頁。第2章Java基本的程序設(shè)計(jì)結(jié)構(gòu) 標(biāo)識(shí)符和關(guān)鍵字 Java的基本數(shù)據(jù)類型 運(yùn)算符、表達(dá)式和語句 語句 輸入輸出 數(shù)組 第47頁,共291頁。2.1 標(biāo)識(shí)符和關(guān)鍵字 在Java中的標(biāo)識(shí)符和關(guān)鍵字統(tǒng)稱為保留字。 第48頁,共291頁。2.1.1 標(biāo)識(shí)符 標(biāo)識(shí)符是賦予常量、變量、方法、類或者接口的名稱,可以由用戶自行定義,無長度限制,但要符合以下規(guī)則:1、標(biāo)識(shí)符可以由一個(gè)或多個(gè)字符組成2、標(biāo)識(shí)符必須以字母、下劃線_或$為開頭,后面可以包含數(shù)字、字母但不包含空格。3、標(biāo)識(shí)符中

35、大小寫字母有區(qū)別,但長度沒有限制4、關(guān)鍵字不能做為標(biāo)識(shí)符使用5、用以命名類、方法和變量、以及包遵守JAVA的命名規(guī)范,類名稱的每個(gè)單詞都以大寫字母開頭。方法和變量第一個(gè)字母不大寫,其他照舊。 第49頁,共291頁。2.1.2 關(guān)鍵字 Java中的關(guān)鍵字,它是Java特意保留的,具有特殊的意義和用途,不可以任意使用或更改,當(dāng)我們?cè)诰帉懗绦驎r(shí)要注意不要使用它作為變量或方法名稱,以免造成程序編譯的錯(cuò)誤。Java的關(guān)鍵字有:Abstract、default、if、package、this、Boolean、do、implements、private、throw、Break、double、import、p

36、rotected、throws、Byte、else、instanceof、public、transient、Case、false、interface、short、try、Catch、final、long、static、void、Char、finally、native、super、volatile、 Class、float、new、switch、while、Continue、for、null、synchronized。goto和const在Java中雖然不再使用,但是還作為關(guān)鍵字存在。 第50頁,共291頁。2.2 Java的基本數(shù)據(jù)類型 Java嚴(yán)格規(guī)定每個(gè)數(shù)據(jù)類型的大小,而且不允許任意更換變

37、量的數(shù)據(jù)類型。也就是說如果A變量我們聲明為整數(shù)類型后,就不能再將A變量改為其它類型,而且所占的空間就是32位,無法更改。第51頁,共291頁。表2-1 Java的基本數(shù)據(jù)類型 類型內(nèi)容默認(rèn)值內(nèi)存空間取值范圍booleantrue/falsefalse16位true或falsecharUnicodeu000016位u0000-uFFFFbyte整數(shù)08位-128+127short整數(shù)016位-32768+32767int整數(shù)032位-2147483648+2147483647long整數(shù)064位-9223372036854775808 +9223372036854775807float浮點(diǎn)0.0

38、32位3.40282347E+381.40239846E-45double浮點(diǎn)0.064位1.79769313486231570E+308 4.94065645841246544E-324第52頁,共291頁。2.2.1 布爾型 布爾型,也就是我們所說的真或假,使用關(guān)鍵字boolean來定義邏輯變量,值為常量:true、false。 【例2-1】一個(gè)布爾型應(yīng)用的示例。定義了一個(gè)布爾類型變量y,起初給它賦值false,然后又賦值為true,在if條件判斷中,因?yàn)閥是true,條件滿足,執(zhí)行語句所以執(zhí)行System.out.println(y is true);,最后是一個(gè)表達(dá)式109,結(jié)果為真,

39、所以顯示true。 第53頁,共291頁。public class BoolTest public static void main(String args) boolean y;y = false;System.out.println(y is + y);y = true;if (y) System.out.println(y is true);System.out.println(109? + (10 9); 第54頁,共291頁。2.2.2 字符型 字符型在C語言中占8位,而Java中由于使用的是unicode,所以占16位?!纠?-2】舉個(gè)例子說明一下字符型數(shù)據(jù)的使用。public c

40、lass CharDemo public static void main(String args) char ch1, ch2;ch1 = 65;ch2 = B;System.out.print(ch1 and ch2);System.out.println(ch1 + + ch2);第55頁,共291頁。大寫的A在ASCII字符集中的值為65,因?yàn)锳SCII中的字符集占了Unicode中的前127個(gè)字符,所以ASCII中的技巧這里面一樣用。從上面可以看出,給字符型變量ch1賦值65和A作用是一樣的。程序2-2運(yùn)行結(jié)果如下所示。 圖2-2 字符型數(shù)據(jù)應(yīng)用示例運(yùn)行結(jié)果 第56頁,共291頁。2

41、.2.3 整數(shù)型 Java定義了四種整數(shù)型,即字節(jié)型(byte),短整型(short),整型(int),長整型(long)。在Java語言中沒有無符號(hào)這個(gè)關(guān)鍵字(unsigned),這個(gè)有區(qū)別于C語言,也就是說所有的數(shù)都為有符號(hào)數(shù)。 第57頁,共291頁。2.2.4 浮點(diǎn)型 浮點(diǎn)型,也就是所說的實(shí)數(shù),其中單精度數(shù)float占4個(gè)字節(jié),雙精度數(shù)占8個(gè)字節(jié),當(dāng)需要保持多次反復(fù)迭代的計(jì)算的精確性時(shí)或操作值很大時(shí),是最好的選擇了?!纠?-4】下面例子是一個(gè)雙精度數(shù)計(jì)算圓面積的例子。/計(jì)算圓的面積public class Area public static void main(String args)

42、 double pi, r, a;r = 0.3; /半徑pi = 3.1416;a = pi * r * r; /面積System.out.println(面積為: + a); 第58頁,共291頁。2.2.5 基本數(shù)據(jù)類型的轉(zhuǎn)換 在Java中類型由低到高的順序?yàn)椋篵yte、short、char、int、long、float、double。1、自動(dòng)轉(zhuǎn)換:當(dāng)由低到高時(shí)可以自動(dòng)轉(zhuǎn)換,比如:byte b;int i=b;long l=b;float f=b;double d=b;那么這些都可以自動(dòng)轉(zhuǎn)換,是合法的,但byte、short、char是平級(jí)的不能自動(dòng)轉(zhuǎn)換,必須使用強(qiáng)制轉(zhuǎn)換。2、強(qiáng)制轉(zhuǎn)換:

43、由高級(jí)到低級(jí)時(shí),必須使用強(qiáng)制轉(zhuǎn)換。int i=99;byte b=(byte) i;char c=(char) i;第59頁,共291頁?!纠?-5】下面例子說明這兩種轉(zhuǎn)換。public class ChangeTest public static void main(String args) byte b = 15;int i = b;long l = b;float f = b;double d = b;System.out.println(b);System.out.println(i);System.out.println(l);System.out.println(f);System

44、.out.println(d);int s = 99;byte n = (byte) s;System.out.println(s);System.out.println(n);注意:在強(qiáng)制轉(zhuǎn)換時(shí)有時(shí)會(huì)導(dǎo)致溢出或降低精度,比如整型值賦給byte時(shí),如果整型值大了,會(huì)自動(dòng)取模再賦值,而浮點(diǎn)數(shù)賦值給整數(shù)時(shí)會(huì)去掉小數(shù)點(diǎn)。 第60頁,共291頁。3、字符串型數(shù)據(jù)與其他數(shù)據(jù)類型轉(zhuǎn)換:在Java中是通過toString()方法來實(shí)現(xiàn)的?!纠?-6】字符串型數(shù)據(jù)與其他數(shù)據(jù)類型轉(zhuǎn)換的例子。public class ChangeTest1 public static void main(String args)

45、 int i1 = 10;float f1 = 3.14f;double d1 = 3.1415926;/注意大小寫Integer I1 = new Integer(i1); /生成integer類Float F1 = new Float(f1); / 生成float類Double D1 = new Double(d1); /生成double類/分別調(diào)用包裝類的tostring()方法轉(zhuǎn)換為字符串String si1 = I1.toString(); /toString在此完成integer類型轉(zhuǎn)換為字符串String si2 = F1.toString();String si3 = D1.t

46、oString();System.out.println(si1);System.out.println(si2);System.out.println(si3);第61頁,共291頁。4、將CHAR型值直接做為數(shù)值轉(zhuǎn)換為其他數(shù)據(jù)類型【例2-7】CHAR型值直接做為數(shù)值轉(zhuǎn)換為其他數(shù)據(jù)類型的例子。public class ChangeTest2 public static void main(String args) int i;char c1 = A;i = c1;System.out.println(i);char c2 = (char) (i + 2); / 此處要強(qiáng)制轉(zhuǎn)換System.o

47、ut.println(c2);第62頁,共291頁。2.3 運(yùn)算符、表達(dá)式 Java提供了豐富的運(yùn)算符,如算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符等。第63頁,共291頁。2.3.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式 在Java中提供運(yùn)算功能的就是運(yùn)算符(Operator),例如與算術(shù)相關(guān)的有加(+)、減(-)、乘(*)、除(/)這類的運(yùn)算符。另外還有一個(gè)也很常用的取模運(yùn)算符(%)。這類以數(shù)學(xué)運(yùn)算為主的運(yùn)算符稱為算術(shù)運(yùn)算符(Arithmetic Operator)。 算術(shù)運(yùn)算符的使用基本上與加減乘除一樣,也是先乘除后加減,必要時(shí)加上括號(hào)表示運(yùn)算的先后順序。 第64頁,共291頁。2.3.2比較和條件運(yùn)

48、算 數(shù)學(xué)上有比較的運(yùn)算,像大于、等于、小于等運(yùn)算,Java中也提供了這些運(yùn)算符,這些運(yùn)算符稱為“比較運(yùn)算符”(Comparison Operator)。它們有大于()、大于等于(=)、小于()、小于等于( 5 結(jié)果 + (10 5);System.out.println(10 = 5 結(jié)果 + (10 = 5);System.out.println(10 5 結(jié)果 + (10 5);System.out.println(10 = 5 結(jié)果 + (10 = 60 ? 是 : 否);第69頁,共291頁。2.3.3邏輯和位運(yùn)算 Java中也提供這幾個(gè)基本邏輯運(yùn)算所需的邏輯運(yùn)算符(Logical O

49、perator),分別為與(&)、或(|)和取反(!)3個(gè)運(yùn)算符。 【例2-11】下面是邏輯和位運(yùn)算的示例。public class LogicalOperator public static void main(String args) int number = 75;System.out.println(number 70 & number 80 | number 80 | number 75);第70頁,共291頁。2.3.4遞增和遞減運(yùn)算 遞增(Increment)、遞減(Decrement)與賦值(Assignment)運(yùn)算符,這幾種運(yùn)算符的目的除了讓程序看來比較簡潔之外,還可以稍微

50、增加一些程序執(zhí)行的效率。在程序中對(duì)變量遞增1或遞減1是很常見的運(yùn)算,例如:int i = 0; i = i + 1; System.out.println(i); i = i - 1; System.out.println(i);上面這段程序會(huì)分別顯示變量+1與-1操作的結(jié)果,1與0兩個(gè)數(shù), 第71頁,共291頁?!纠?-16】遞增、遞減運(yùn)算符的示例。 public class IncrementDecrement public static void main(String args) int i = 0;System.out.println(+i);System.out.println(-

51、i);第72頁,共291頁。2.3.5賦值運(yùn)算符 到目前為止,只學(xué)習(xí)過一個(gè)賦值運(yùn)算符,也就是=這個(gè)運(yùn)算符,事實(shí)上賦值運(yùn)算符還有其他幾個(gè),如表2-2所示。 賦值運(yùn)算符范例結(jié)果+=a += ba = a + b-=a -= ba = a - b*=a *= ba = a * b/=a /= ba = a / b%=a %= ba = a % b&=a &= ba = a & b |=a |= ba = a | b=a = ba = a b =a = ba = a =a = ba = a b表2-2 賦值運(yùn)算符 第73頁,共291頁。2.4語句 在Java語言中,語句可分為以下5類:1方法調(diào)用語句S

52、ystem.out.println(“Hello”);2表達(dá)式語句由一個(gè)表達(dá)式構(gòu)成一個(gè)語句,最典型的是賦值語句,如:x = 23;一個(gè)表達(dá)式加上一個(gè)分號(hào)就構(gòu)成了一個(gè)語句,分號(hào)是語句不可缺少的部分。3復(fù)合語句可以用把一些語句括起來構(gòu)成復(fù)合語句,如:z = 23 + x;System.out.println(“Hello”);4控制語句包括條件語句和switch開關(guān)語句。5package語句和import語句Package語句和import語句與類、對(duì)象有關(guān),相關(guān)內(nèi)容在第3章中介紹。 第74頁,共291頁。2.4.2 控制語句 Java的控制語句有2種類型,即條件語句和switch開關(guān)語句。 1條

53、件控制語句為了解決“如果”發(fā)生了,就要的需要,Java提供了if條件控制語句。它的語法如下:if(條件式) 語句1;else 語句2;第75頁,共291頁。如果在if后有兩個(gè)以上的語句,稱之為復(fù)合語句(Compound Statement),此時(shí)必須使用 定義程序塊(Block)將復(fù)合語句包括起來。例如:if(條件式) 語句1; 語句2; else 語句3; 語句4;第76頁,共291頁。【例2-19】使用if條件式來判斷使用者的輸入是奇數(shù)還是偶數(shù)。 import java.util.Scanner;public class OddDecider3 public static void mai

54、n(String args) Scanner scanner = new Scanner(System.in);System.out.print(請(qǐng)輸入數(shù)字: );int input = scanner.nextInt();int remain = input % 2; / 求除 2 的余數(shù)if (remain = 1) / 如果余數(shù)為1System.out.println(input + 為奇數(shù));elseSystem.out.println(input + 為偶數(shù));第77頁,共291頁。2switch 條件式 switch只能比較數(shù)值或字符,使用適當(dāng)?shù)脑?,可比if判斷式有效率。switc

55、h的語法結(jié)構(gòu)如下:switch(變量名稱或表達(dá)式) case 符合數(shù)字或字符: 語句1; break; case 符合數(shù)字或字符: 語句2; break; default: 語句3; 第78頁,共291頁?!纠?-21】使用switch來改寫處理學(xué)生的成績等級(jí)問題。 import java.util.Scanner;public class ScoreLevel2 public static void main(String args) Scanner scanner = new Scanner(System.in);System.out.print(請(qǐng)輸入分?jǐn)?shù): );int score =

56、scanner.nextInt();int level = (int) score / 10;switch (level) case 10:case 9:System.out.println(得A);break;case 8:System.out.println(得B);break;case 7:System.out.println(得C);break;case 6:System.out.println(得D);break;default:System.out.println(得E(不及格);第79頁,共291頁。2.4.3 循環(huán)語句 1for循環(huán) 在Java中如果要進(jìn)行重復(fù)性的指令執(zhí)行,可以

57、使用for循環(huán)式。它的基本語法如下:for(初始式; 判斷式; 遞增式) 語句1; 語句2; 如果語句只有一個(gè),也就是非復(fù)合語句, 可以省略不寫。for循環(huán)的第一個(gè)初始語句只會(huì)執(zhí)行一次,之后每次重新進(jìn)行循環(huán)時(shí),都會(huì)根據(jù)判斷式來判斷是否執(zhí)行下一個(gè)循環(huán),而每次執(zhí)行完循環(huán)之后,都會(huì)執(zhí)行遞增式。第80頁,共291頁。【例2-22】for循環(huán)的功能示例。 public class SimpleLoopFor public static void main(String args) for (int i = 0; i 10; i+)System.out.print( + i);第81頁,共291頁。2wh

58、ile循環(huán) Java提供while循環(huán)式,它可以根據(jù)所指定的條件式來判斷是否執(zhí)行循環(huán)體。語法如下:while(條件式) 語句1; 語句2; 第82頁,共291頁?!纠?-25】計(jì)算輸入成績平均的程序。 import java.util.Scanner;public class ScoreAverage public static void main(String args) Scanner scanner = new Scanner(System.in);int score = 0;int sum = 0;int count = -1;while (score != -1) count+;su

59、m += score;System.out.print(輸入分?jǐn)?shù)(-1結(jié)束):);score = scanner.nextInt();System.out.println(平均: + (double) sum / count);第83頁,共291頁。2.4.4 break和continue break可以離開當(dāng)前switch、for、while、do while的程序塊,并前進(jìn)至程序塊后下一條語句,在switch中主要用來中斷下一個(gè)case的比較。在for、while與do while中,主要用于中斷目前的循環(huán)執(zhí)行,break的例子之前已經(jīng)看過不少,這里不再舉例。continue的作用與bre

60、ak類似,主要用于循環(huán),所不同的是break會(huì)結(jié)束程序塊的執(zhí)行,而continue只會(huì)結(jié)束其之后程序塊的語句,并跳回循環(huán)程序塊的開頭繼續(xù)下一個(gè)循環(huán),而不是離開循環(huán)。 第84頁,共291頁。例如:for(int i = 1; i 10; i+) if(i = 5) break; System.ut.println(i = + i); 這段程序會(huì)顯示i = 1到4,因?yàn)楫?dāng) i 等于5時(shí)就會(huì)執(zhí)行break而離開循環(huán)。 第85頁,共291頁。看下面這個(gè)程序:for(int i = 1; i 10; i+) if(i = 5) continue; System.out.println(i = + i);

溫馨提示

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

評(píng)論

0/150

提交評(píng)論