教學(xué)課件:《JAVA語言程序設(shè)計》_第1頁
教學(xué)課件:《JAVA語言程序設(shè)計》_第2頁
教學(xué)課件:《JAVA語言程序設(shè)計》_第3頁
教學(xué)課件:《JAVA語言程序設(shè)計》_第4頁
教學(xué)課件:《JAVA語言程序設(shè)計》_第5頁
已閱讀5頁,還剩374頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java基本語法第1章學(xué)習(xí)目標(biāo):了解Java語言產(chǎn)生的歷史和工作原理,以及Java語言的發(fā)展Java語法機制概述,掌握J(rèn)ava程序的結(jié)構(gòu)、編程規(guī)范掌握J(rèn)ava的運行系統(tǒng)基本原理與Java虛擬機(JVM)的作用了解Java程序開發(fā)的工具,并掌握安裝Java開發(fā)環(huán)境的方法第1章 Java基本語法本章主要介紹了Java語言的發(fā)展歷史、主要特點、Java平臺家族,以及Java程序開發(fā)基礎(chǔ)環(huán)境(即JDK和集成開發(fā)環(huán)境)。通過本章學(xué)習(xí),讀者將對Java語言的基本原理,語法結(jié)構(gòu)與編程方法有一定的了解,能夠簡單地編輯、調(diào)試和運行Java程序代碼。1.1 Java的起源與發(fā)展一、Java的起源 二、Java的發(fā)

2、展一、Java的起源 1991年,美國Sun Microsystems公司的某個研究小組為了能夠在消費電子產(chǎn)品上開發(fā)應(yīng)用程序,積極尋找合適的編程語言。消費電子產(chǎn)品種類繁多,包括PDA、機頂盒、手機等,即使是同一類消費電子產(chǎn)品所采用的處理芯片和操作系統(tǒng)也不相同,存在著跨平臺的問題。當(dāng)時最流行的編程語言是C和C+語言,Sun公司的研究人員就考慮是否可以采用C+語言來編寫消費電子產(chǎn)品的應(yīng)用程序,但是研究表明,對于消費電子產(chǎn)品而言,C+語言過于復(fù)雜和龐大,并不適用,安全性也并不令人滿意。于是,Bill Joy先生領(lǐng)導(dǎo)的研究小組就著手設(shè)計和開發(fā)出一種語言,稱之為Oak。該語言采用了許多C語言的語法,提高

3、了安全性,并且是面向?qū)ο蟮恼Z言,但是Oak語言在商業(yè)上并未獲得成功。時間轉(zhuǎn)到了1995年,互聯(lián)網(wǎng)在世界上蓬勃發(fā)展,Sun公司發(fā)現(xiàn)Oak語言所具有的跨平臺、面向?qū)ο蟆踩愿叩忍攸c非常符合互聯(lián)網(wǎng)的需要,于是改進(jìn)了該語言的設(shè)計,要達(dá)到如下幾個目標(biāo): (1) 創(chuàng)建一種面向?qū)ο蟮某绦蛟O(shè)計語言,而不是面向過程的語言; (2) 提供一個解釋執(zhí)行的程序運行環(huán)境,是程序代碼獨立于平臺; (3) 吸收C和C+的優(yōu)點,使程序員容易掌握; (4) 去掉C和C+中影響程序健壯性的部分,使程序更安全,例如指針、內(nèi)存申請和釋放; (5) 實現(xiàn)多線程,使得程序能夠同時執(zhí)行多個任務(wù); (6) 提供動態(tài)下載程序代碼的機制; (

4、7) 提供代碼校驗機制以保證安全性。 最終,Sun公司給該語言取名為Java語言,造就了一代成功的編程語言。 二、Java的發(fā)展 1995年,美國Sun Microsystems公司正式向IT業(yè)界推出了Java語言,該語言具有安全、跨平臺、面向?qū)ο?、簡單、適用于網(wǎng)絡(luò)等顯著特點,當(dāng)時以Web為主要形式的互聯(lián)網(wǎng)正在迅猛發(fā)展,Java語言的出現(xiàn)迅速引起所有程序員和軟件公司的極大關(guān)注,程序員們紛紛嘗試用Java語言編寫網(wǎng)絡(luò)應(yīng)用程序,并利用網(wǎng)絡(luò)把程序發(fā)布到世界各地進(jìn)行運行,包括IBM、Oracle、微軟、Netscape、Apple、SGI等大公司紛紛與Sun Microsystems公司簽訂合同,授權(quán)

5、使用Java平臺技術(shù)。微軟公司總裁比爾蓋茨先生在經(jīng)過研究后認(rèn)為:“Java語言是長時間以來最卓越的程序設(shè)計語言”。目前,Java語言已經(jīng)成為最流行的網(wǎng)絡(luò)編程語言,許多大學(xué)紛紛開設(shè)Java課程,Java正逐步成為世界上程序員最多的編程語言。 在經(jīng)歷了以大型機為代表的集中計算模式和以PC為代表的分散計算模式之后,互聯(lián)網(wǎng)的出現(xiàn)使得計算模式進(jìn)入了網(wǎng)絡(luò)計算時代。網(wǎng)絡(luò)計算模式的一個特點是計算機是異構(gòu)的,即計算機的類型和操作系統(tǒng)是不一樣的,例如SUN工作站的硬件是SPARC體系,軟件是UNIX中的Solaris操作系統(tǒng),而PC的硬件是INTEL體系,操作系統(tǒng)是Windows或者是Linux,因此相應(yīng)的編程語

6、言基本上只是適用于單機系統(tǒng),例如COBOL、FORTRAN、C、C+等;網(wǎng)絡(luò)計算模式的另一個特點是代碼可以通過網(wǎng)絡(luò)在各種計算機上進(jìn)行遷移,這就迫切需要一種跨平臺的編程語言,使得用它編寫的程序能夠在網(wǎng)絡(luò)中的各種計算機上能夠正常運行,Java就是在這種需求下應(yīng)運而生的。正是因為Java語言符合了互聯(lián)網(wǎng)時代的發(fā)展要求,才使它獲得了巨大的成功。1.2 什么是Java技術(shù) Java技術(shù),簡而言之就是一種獨立于操作系統(tǒng)平臺的編程語言與開發(fā)平臺。 1.3 Java的語法機制概述一、Java源程序的組成部分二、源文件的命名規(guī)則三、其他命名約定一、Java源程序的組成部分package語句; /該部分至多只有一

7、句,必須放在源程序的第一句import語句; /該部分可以有若干import語句或者沒有,必須放在所有的類定義之前public classDefinition; /公共類定義部分,至多只有一個公共類的定義/Java語言規(guī)定該Java源程序的文件名必須與該公共類名完全一致classDefinition; /類定義部分,可以有0個或者多個類定義interfaceDefinition; /接口定義部分,可以有0個或者多個接口定義二、源文件的命名規(guī)則 如果在源程序中包含有公共類的定義,則該源文件名必須與該公共類的名字完全一致,字母的大小寫都必須一樣。這是Java語言的一個嚴(yán)格的規(guī)定,如果不遵守,在編譯

8、時就會出錯。因此,在一個Java源程序中至多只能有一個公共類的定義。如果源程序中不包含公共類的定義,則該文件名可以任意取名。如果在一個源程序中有多個類定義,則在編譯時將為每個類生成一個.class文件。三、其他命名約定 包名:包名是全小寫的單詞,中間由“.”分隔開,例如:Java.awt.event; 類名:首字母大寫,通常由多個單詞合成一個類名,要求每個單詞的首字母也要大寫,如:HelloWorldApp; 接口名:命名規(guī)則與類名相同,如:Collection; 方法名:往往由多個單詞合成,第一個單詞通常為動詞,首字母小寫,中間的每個單詞的首字母都要大寫,如:balanceAccount、i

9、sButtonPressed; 變量名:全小寫,一般為名詞,如:length; 常量名:基本數(shù)據(jù)類型的常量名為全大寫,如果是由多個單詞構(gòu)成,可以用下劃線隔開,例如:YEAR,WEEK_OF_MONTH;如果是對象類型的常量,則是大小寫混合,由大寫字母把單詞隔開。 Java的運行系統(tǒng)是一個完整、有機的程序設(shè)計系統(tǒng),其功能主要由JVM、JDK以及開發(fā)平臺組成。1.4 Java運行系統(tǒng)與JVM一、Java虛擬機JVM二、JVM的組成三、垃圾自動回收機制四、代碼安全性檢查機制一、Java虛擬機JVM JVM(Java Virtual Machine),Java虛擬機,是軟件模擬的計算機,可以在任何處理

10、器上(無論是在計算機中還是在其他電子設(shè)備中)安全并且兼容的執(zhí)行保存在.class文件中的字節(jié)碼。Java虛擬機的“機器碼”保存在.class文件中,也可以稱之為字節(jié)碼文件。Java程序的跨平臺主要是指字節(jié)碼文件可以在任何具有Java虛擬機的計算機或者電子設(shè)備上運行,Java虛擬機中的Java解釋器負(fù)責(zé)將字節(jié)碼文件解釋成為特定的機器碼進(jìn)行運行。Java源程序需要通過編譯器編譯成為.class文件,Java程序的編譯和執(zhí)行過程如圖1-1所示 圖1-1 Java程序的編譯和執(zhí)行過程二、JVM的組成 JVM為下列各項做出了定義:指令集(相當(dāng)于中央處理器CPU)注冊集類文件格式棧垃圾收集堆存儲區(qū)三、垃圾

11、自動回收機制 在程序的執(zhí)行過程中,部分內(nèi)存在使用過后就處于廢棄狀態(tài),如果不及時進(jìn)行無用內(nèi)存的回收,就會造成內(nèi)存泄漏,進(jìn)而導(dǎo)致系統(tǒng)崩潰。在C+語言中是由程序員進(jìn)行內(nèi)存回收的,程序員需要在編寫程序的時候把不再使用的對象內(nèi)存釋放掉;但是這種人為的管理內(nèi)存釋放的方法卻往往由于程序員的疏忽而致使內(nèi)存無法回收,同時也增加了程序員的工作量。而在Java運行環(huán)境中,始終存在著一個系統(tǒng)級的線程,專門跟蹤內(nèi)存的使用情況,定期檢測出不再使用的內(nèi)存,并進(jìn)行自動回收,避免了內(nèi)存的泄露,也減輕了程序員的工作量。四、代碼安全性檢查機制 字節(jié)碼的執(zhí)行需要經(jīng)過三個步驟,首先由類裝載器(class loader)負(fù)責(zé)把類文件(.

12、class文件)加載到Java虛擬機中,在此過程需要檢驗該類文件是否符合類文件規(guī)范;其次字節(jié)碼校驗器(bytecode verifier)檢查該類文件的代碼中是否存在著某些非法操作,例如Applet程序中寫本機文件系統(tǒng)的操作;如果字節(jié)碼校驗器檢驗通過,由Java解釋器負(fù)責(zé)把該類文件解釋成為機器碼進(jìn)行執(zhí)行。Java虛擬機采用的是“沙箱”運行模式,即把Java程序的代碼和數(shù)據(jù)都限制在一定內(nèi)存空間里執(zhí)行,不允許程序訪問該內(nèi)存空間外的內(nèi)存,如果是Applet程序,還不允許訪問客戶端機器的文件系統(tǒng)。1.5.1 JDK的安裝和配置1.5 Java程序開發(fā)一、下載并安裝JDK二、認(rèn)識JDK三、配置JDK環(huán)境

13、變量一、下載并安裝JDK Java開發(fā)工具包(Java Development Kits,簡稱JDK)是Java應(yīng)用程序開發(fā)的基礎(chǔ)工具包,開發(fā)Java應(yīng)用程序首先必須下載JDK(JDK可以從Sun公司的官方網(wǎng)站上去下載)。下載完成后,雙擊圖標(biāo)進(jìn)行安裝,安裝過程中可以自定義安裝目錄等信息。例如我們可以選擇安裝目錄為D:jdk1.5。二、認(rèn)識JDK 在安裝完成后,可以發(fā)現(xiàn)在安裝目錄下具有如下文件夾,bin、include、jre、lib、sample、demo、src.zip等,其作用如表1-1所示:Binbin目錄提供了工具程序,包括Javac、Java、Javado等Jrejre目錄下的文件是

14、JDK附帶的JRE資源包Liblib目錄下提供了Java工具所需要的資源文件DemoDemo目錄下提供了Java編寫的范例程序Src.zipSrc.zip目錄下提供了API類的源代碼壓縮文件表1-1 JDK包的目錄及其作用三、配置JDK環(huán)境變量(1) 右擊“我的電腦”,選擇“屬性”命令,如圖1-2所示: 圖1-2 配置JDK系統(tǒng)路徑1(2) 切換到“高級”選項卡,單擊“環(huán)境變量”按鈕,如圖1-3所示:圖1-3 配置JDK系統(tǒng)路徑2 (3) 在“系統(tǒng)變量”中,設(shè)置3項屬性,Java_HOME、PATH、CLASSPATH(不區(qū)分大小寫),若已存在則點擊“編輯”按鈕,不存在則點擊“新建”按鈕,如圖

15、1-4所示:圖1-4 配置JDK系統(tǒng)路徑3 (4) Java_HOME指明JDK安裝路徑,就是剛才安裝時所選擇的路徑D:jdk1.4,此路徑下包括lib,bin,jre等文件夾(此變量最好設(shè)置,因為以后運行tomcat,eclipse等都需要依靠此變量);Path使得系統(tǒng)可以在任何路徑下識別Java命令,設(shè)為: %Java_HOME%bin;%Java_HOME%jrebinCLASSPATH為Java加載類(class或lib)路徑,只有類在classpath中,Java命令才能識別,設(shè)為: .;%Java_HOME%lib;%Java_HOME%libtools.jar (要加“.”表示當(dāng)

16、前路徑) %Java_HOME%就是引用前面指定的Java_HOME。圖1-5 配置JDK系統(tǒng)路徑41.5.2 Eclipse簡介一、Eclipse簡介二、下載并安裝Eclipse一、Eclipse簡介 在實際應(yīng)用中,任何開發(fā)者都會選擇一個好的IDE(集成開發(fā)環(huán)境)。常用的Java的IDE主要有:JCreater,JBuilder,Eclipse等。其中Eclipse是一款非常優(yōu)秀的開源的IDE,基于Java的可擴(kuò)展平臺?,F(xiàn)在Eclipse憑借其靈活的擴(kuò)展能力,優(yōu)良的性能與插件技術(shù),受到了越來越多的開發(fā)者的喜愛。 盡管Eclipse是使用Java語言開發(fā)的,但它的用途并不限于Java語言。例如

17、,支持諸如C/C+、COBOL和Eiffel等編程語言的插件已經(jīng)可用,或預(yù)計會推出。Eclipse框架還可用來作為與軟件開發(fā)無關(guān)的其他應(yīng)用程序類型的基礎(chǔ),比如內(nèi)容管理系統(tǒng)。 基于Eclipse的應(yīng)用程序的突出例子是IBM的WebSphere Studio Workbench,它構(gòu)成了IBM Java開發(fā)工具系列的基礎(chǔ)。例如,WebSphere Studio Application Developer添加了對JSP、Servlet、EJB、XML、Web服務(wù)和數(shù)據(jù)庫訪問的支持。 二、下載并安裝Eclipse 目前最新的版本是Eclipse3.2.2,下載地址為: /downloads 點擊Ecl

18、ipse SDK3.22進(jìn)入下載頁面,下載面向Windows系列操作系統(tǒng)的最新版本Eclipse-SDK資源包。該資源包包括了適合于Windows平臺的Eclipse開發(fā)環(huán)境、Java開發(fā)環(huán)境、Plug-in開發(fā)環(huán)境、所有源代碼和文檔。如需下載面向其他平臺Eclipse-SDK或插件可點擊other download for 3.2.2,其他版本的資源包可點擊All versions進(jìn)入下載頁面下載。下載完成后將其解壓。 Eclipse是一個綠色軟件,無需安裝即可執(zhí)行。如需中文版的集成開發(fā)環(huán)境,可在Eclipse官方網(wǎng)站下載中文語言包NLpack1-eclipse-SDK-3.2.2- win

19、32.zip。解壓后,分別將其features、plugins目錄下的文件復(fù)制到Eclipse安裝目錄下的features、plugins目錄中,重新啟動Eclipse即可。1.6 任務(wù)1.1 第一個Java程序一、任務(wù)引入Java程序分為Java Application(Java應(yīng)用程序)和Java Applet(Java小應(yīng)用程序)兩種。怎樣在開發(fā)平臺上開發(fā)、編譯以及運行Java程序呢?下面讓我們開始編寫第一個Java應(yīng)用程序。二、任務(wù)目標(biāo)掌握編寫、編譯、運行Java程序的基本方法。三、任務(wù)內(nèi)容 編寫一個Java應(yīng)用程序,它能夠利用來自Java標(biāo)準(zhǔn)庫的System對象的多種方法,打印出與當(dāng)

20、前運行的系統(tǒng)有關(guān)的資料。其中“/”代表一種注釋方式,表示從這個符號開始到這行結(jié)束的所有內(nèi)容都是注釋。在每個程序文件的開頭,如果這個文件的代碼中用到了系統(tǒng)所提供的額外的類,就必須放置一個import語句。說它是額外的是因為一個特殊的類庫“Java.lang.*”會自動導(dǎo)入到每個Java文件。/*源程序文件名:Ex0101.Java*/import Java.util.Date;import Java.util.Properties;public class Ex0101 /創(chuàng)建公共類,名為Ex0101public static void main(String args) System.out.

21、println(new Date( );Properties p=System.getProperties( ); p.list(System.out); System.out.println( Memory Usage:); Runtime rt=Runtime.getRuntime( ); System.out.println(Total Memory= +rt.totalMemory()/打印總內(nèi)存大小+ Free Memory = +rt.freeMemory();/打印空閑內(nèi)存大小四、程序清單五、運行結(jié)果圖1-6 Ex0101.Java的運行結(jié)果 該任務(wù)的主要目的是使大家對Java的

22、編程結(jié)構(gòu)有一個總體認(rèn)識,在Java中所有的東西都是對象,程序就是由一大堆對象組合而成的,同時每個對象又屬于某個類,所有的代碼都是在某一個類中完成的。六、任務(wù)小結(jié) 通過本章的學(xué)習(xí),大家已經(jīng)可以閱讀一些簡單的Java程序了。 Java語言的產(chǎn)生源于Sun Microsystems公司為消費電子產(chǎn)品上應(yīng)用程序的開發(fā)尋找一門編程語言的過程中,而隨著互聯(lián)網(wǎng)時代的到來,原有的Oak軟件就順理成章的改造成Java語言推向了市場,其跨平臺、面向?qū)ο?、安全等特點使其得到廣泛的應(yīng)用。 通過在不同的軟硬件上實現(xiàn)的Java虛擬機,Java的字節(jié)碼文件就可以跨平臺的進(jìn)行運行,無用內(nèi)存自動回收器也給程序員帶來了極大的方便

23、。 Java是一門純粹的面向?qū)ο蟮木幊陶Z言。面向?qū)ο缶幊痰乃悸氛J(rèn)為程序都對象的組合,因此要克服面向過程編程的思路,直接按照對象和類的思想去組織程序,面向?qū)ο笏哂械姆庋b性、繼承性、多態(tài)性等特點使其具有強大的生命力。 Sun公司為全世界Java開發(fā)人員提供了一套免費的軟件開發(fā)包JDK,它不僅是Java的開發(fā)平臺,還是Java的運行平臺。 Java源程序存放在.Java文件中,可以使用任意一種文本編輯器編輯。源程序經(jīng)過“Javac”命令編譯過后,就生成了相應(yīng)的.class文件。而用“Java”命令則可以運行.class文件。 作為面向?qū)ο缶幊倘藛T來說,還必須掌握一些常用的IDE開發(fā)環(huán)境的使用?,F(xiàn)階

24、段最受程序員喜愛的IDE環(huán)境是Eclipse。本章小結(jié)什么Java編程語言?對比J2SE、J2EE和J2ME的特點及使用方向(2) 作為Java程序員,可以選擇哪些IDE集成開發(fā)環(huán)境來開發(fā)程序?(3) 為什么說Java語言是與平臺無關(guān)的語言?這種機制是由什么技術(shù)來實現(xiàn)的?(4) 下載并安裝JDK5,配置Java命令路徑和類路徑。(5) 下載并安裝Eclipse,使用Eclipse編輯、調(diào)試并運行任務(wù)1.1。思考與練習(xí)綜合訓(xùn)練 (1) 參照本章任務(wù),創(chuàng)建一個名為HelloWorldApp的Java Application,在屏幕上簡單的顯示一句話“Hello World!”。 (2) 編寫一個名

25、為PrintArguments的程序,打印從命令行中獲取的四個參數(shù)。例如在命令行中輸入“Java PrintArguments 10 20 30 40”時,將打印出“10 20 30 40”。第2章Java基本語法學(xué)習(xí)目標(biāo) 掌握變量的聲明和初始化方法,理解變量的作用域 掌握算術(shù)運算符、關(guān)系與條件運算符、位運算符、賦值運算符和其他運算符的使用方法,掌握運算符的優(yōu)先級,掌握類型轉(zhuǎn)換的概念和方法 掌握分支控制、循環(huán)控制和中斷控制等流程控制語句的使用方法和技巧 掌握一維、多維數(shù)組的聲明、初始化和使用方法 掌握String類和StringBuffer類的使用方法,理解兩者之間的異同 語法是程序設(shè)計的基礎(chǔ)

26、,任何一種程序設(shè)計語言,都有一套自己的語法規(guī)則。本章將向大家介紹Java語言中所使用到的一些基本的語法和要求,包括變量、運算符、表達(dá)式和流程控制語句以及Java中數(shù)組和字符串的定義和使用方法。 2.1 變 量2.1.1 任務(wù)2.1 聲明和使用變量2.1.2 變量的聲明和初始化2.1.3 變量的作用域2.1.1 任務(wù)2.1 聲明和使用變量一、任務(wù)引入 在一個程序中,我們將會使用到很多數(shù)據(jù),這些數(shù)據(jù)有的是事先給定的,比如圓周率;有的是事先我們不知道,在程序運行中會不斷變化的,比如計算結(jié)果。那么,我們怎樣使用和操縱這些數(shù)據(jù)呢?請看下面的例子:二、任務(wù)目標(biāo)掌握聲明和初始化變量的方法,了解變量的類型。三

27、、任務(wù)內(nèi)容由給定的半徑,計算圓的面積。四、程序清單/*源程序文件名:Ex0201.java*/import java.io.*;public class Ex0201public static void main(String args)double pai = 3.14;double fR, fArea;tryBufferedReader inObj = new BufferedReader(new InputStreamReader(System.in);System.out.println(請指定圓的半徑:);fR = Double.parseDouble(inObj.readLine(

28、);inObj.close();fArea = pai*fR*fR;System.out.println(圓的半徑是:t+fR);System.out.println(圓的面積是:t+fArea);catch(Exception e)System.out.println(e);五、運行結(jié)果六、任務(wù)小結(jié) 我們來關(guān)注這些語句: double pai = 3.14; double fR, fArea; 這是對變量的聲明和初始化。所謂聲明,就是在使用一個變量前,為這個變量取一個名字,并規(guī)定它能夠存放的數(shù)據(jù)類型,而初始化則是為變量設(shè)定一個初始值。在這里,我們聲明了三個變量:pai、fR和fArea,它們

29、都是double類型,即雙精度實型量。其中變量pai已經(jīng)被初始化為3.14,fR和fArea還沒有初始化,此時它們沒有具體的值。2.1.2 變量的聲明和初始化 要使用一個變量,必須先聲明變量的名字、類型等特征,并對其進(jìn)行初始化后才能使用它。簡單變量的聲明和初始化格式如下: type name = value;一、數(shù)據(jù)類型二、標(biāo)識符 標(biāo)識符用于對變量、類和方法的命名。 標(biāo)識符是除關(guān)鍵字外的任意一串以合法字母、下劃線(_)或美元符號($)開頭的,由合法字母、數(shù)字、下劃線(_)和美元符號($)組成的字符串。 abstractbooleanbreakbytecasecatchcharclasscons

30、tcontinuedefaultdodoubleelseextendsfinalfinallyfloatforgotoifimplementsimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicreturnshortstaticsuperswitchsynchronizedthisthrowthrowstransienttryvirtualvoidvolatilewhile表2-1 Java的關(guān)鍵字2.1.3 變量的作用域 變量經(jīng)過聲明和初始化后就可以使用了,但并不是一個變量聲明和初始化后就可以隨便在哪里使

31、用,這里涉及一個作用域的問題。變量的作用域就是該變量能被訪問的區(qū)間,在程序源代碼中通常以程序段來劃分。2.2 運算符和表達(dá)式2.2.1 任務(wù)2.2 四則運算一、任務(wù)引入 在很多程序設(shè)計中,程序員都會遇到關(guān)于數(shù)值計算的問題,這其中就包括我們常見的加減乘除四則運算。在Java中是怎么樣進(jìn)行這些基本計算的呢?請看下面的例子:二、任務(wù)目標(biāo) 掌握算術(shù)運算符的使用方法。三、任務(wù)內(nèi)容 四則運算。四、程序清單/*源程序文件名:Ex0202.java*/import java.io.*;public class Ex0202 public static void main(String args)int a =

32、 5+4;/a=9int b = a*2;/b=18int c = b/4;/c=4int d = b-c;/d=14int e = -d;/e=-14int f = e%4;/f=-2double g = 18.4;double h = g%4;/h=2.4int i = 3;int j = i+;/i=4,j=3int k = +i;/i=5,k=5System.out.print(a = +a);System.out.println(b = +b);System.out.print(c = +c);System.out.println(d = +d);System.out.print(e

33、 = +e);System.out.println(f = +f);System.out.print(g = +g);System.out.println(h = +h);System.out.print(i = +i);System.out.println(j = +j);System.out.println(k = +k);五、運行結(jié)果六、任務(wù)小結(jié) 這是一個很簡單的例子,在這個例子中,我們使用了Java提供的全部八個算術(shù)運算符,除了大家熟悉的加(+)減(-)乘(*)除(/)運算之外,還有取余(%)、求反(-)、自增(+)以及自減(-)運算,在下一小節(jié)中,我們將詳細(xì)介紹這八個運算符的使用方法

34、和注意事項。2.2.2 算術(shù)運算符算術(shù)運算符用于完成算術(shù)運算。Java提供了兩大類共八個算術(shù)運算符。運算符運算示例功能+加a+b求a與b相加的和-減a-b求a與b相減的差*乘a*b求a與b相乘的積/除a/b求a除以b的商%取余a%b求a除以b的余數(shù)表2-2 雙目算術(shù)運算符運算符運算示例功能+自增a+或+a等價于a=a+1-自減a-或-a等價于a=a-1-求反-a等價于-1*a表2-3 單目算術(shù)運算符2.2.3 任務(wù)2.3 比較大小一、任務(wù)引入 除了基本的算術(shù)運算之外,我們還會對遇到的數(shù)據(jù)進(jìn)行大小比較,以決定它們的性質(zhì)或者是程序運行的順序,下面我們來看一看Java中是如何比較大小的。請看下面的例

35、子:二、任務(wù)目標(biāo) 掌握J(rèn)ava中關(guān)系運算符的使用方法。三、任務(wù)內(nèi)容 將三個數(shù)按大小順序輸出。四、程序清單/*源程序文件名:Ex0203.java*/import java.io.*;public class Ex0203 public static void main(String args)int a = 5, b = 12, c = 8;int temp = 0;if(ab)temp = a; a = b; b = temp;if(bc)temp = b; b = c; c = temp;if(a大于aba大于b時結(jié)果為true小于a=大于等于a=ba大于或等于b時結(jié)果為true=小于等于

36、a=ba小于或等于b時結(jié)果為true表2-4 關(guān)系運算符運算符運算示例功能&非簡潔與x&yx,y都為true時結(jié)果為true&簡潔與x&y|非簡潔或x|yx,y中有一個為true結(jié)果為true|簡潔或x|y異或xyx,y相同時結(jié)果為false!取反!xx為false時結(jié)果為true表2-5 條件運算符2.2.5 任務(wù)2.4 使用標(biāo)記位一、任務(wù)引入 在很多RPG游戲中,人物角色所掌握的多種技能通常使用一個變量存儲,這就是標(biāo)記位存儲方法,而其所使用的運算就是位運算符。下面我們通過一個游戲程序片段來看一看Java中是如何使用位運算符的。請看下面的例子:二、任務(wù)目標(biāo)掌握J(rèn)ava中位運算符的使用方法。三

37、、任務(wù)內(nèi)容設(shè)計函數(shù),讓人物角色學(xué)習(xí)各種技能。四、程序清單/*源程序文件名:Ex0204.java*/public class Ex0204 public static void main(String args)int sCook = 1, sFish = 2, sProject = 4, sForge = 8;/各技能標(biāo)記character ch1 = new character();ch1.learnSkill(sCook);/學(xué)習(xí)烹飪技能ch1.learnSkill(sForge);/學(xué)習(xí)鍛造技能if(ch1.haveSkill(sCook)System.out.println(+會烹飪

38、。);elseSystem.out.println(+不會烹飪。);if(ch1.haveSkill(sFish)System.out.println(+會釣魚。);elseSystem.out.println(+不會釣魚。);class characterString name = smith;String sex = m;int skill = 0;/技能標(biāo)記位void learnSkill(int skillCode)/學(xué)習(xí)技能this.skill = this.skill|skillCode;boolean haveSkill(int skillCode)/判斷是否擁有技能return

39、(this.skill&skillCode)=skillCode);五、運行結(jié)果六、任務(wù)小結(jié) 位運算是針對二進(jìn)制數(shù)進(jìn)行操作的,所以我們在分析這個例子的時候,要先將其中的一些整型量轉(zhuǎn)為二進(jìn)制形式后才能更好地理解。如人物技能標(biāo)記位skill的初始值為(0000) 2,烹飪技能標(biāo)記為(0001) 2,釣魚技能標(biāo)記為(0010)2,工程技能標(biāo)記為(0100)2,鍛造技能標(biāo)記為(1000)2。 注意兩個函數(shù)中的語句:this.skill = this.skill|skillCode;return(this.skill&skillCode)=skillCode); 第一條語句使用的是按位或(|),即(00

40、00)2|(0001)2=(0001)2,人物技能標(biāo)記位的最后一位為1,表示人物學(xué)會了烹飪技能。第二條語句使用的是按位與(&),即(0101)2&(0001)2=(0001)2,再將結(jié)果與相應(yīng)技能標(biāo)記比較,這樣來判斷人物是否掌握這種技能。 除按位運算符外,還有移位運算符,在下一小節(jié)中,我們將詳細(xì)介紹按位和移位運算符的使用方法。2.2.6 位運算符運算符運算示例功能&按位與a&b將a和b按二進(jìn)制進(jìn)行與運算|按位或a|b將a和b按二進(jìn)制進(jìn)行或運算按位異或ab將a和b按二進(jìn)制進(jìn)行異或運算按位取反a將a按二進(jìn)制進(jìn)行取反運算表2-6 按位運算符運算符運算示例功能左移a右移ab將a右移b位無符號右移ab將

41、a右移b位,左邊空位填零表2-7 移位運算符2.2.7 賦值運算符與類型轉(zhuǎn)換一、賦值運算符 賦值運算符用于將運算符右邊表達(dá)式的值賦給左邊的變量,基本使用格式如下: 變量 = 表達(dá)式;如: i = 1; k = i+j/4;二、類型轉(zhuǎn)換 賦值運算的基本要求是運算符左右兩邊的數(shù)據(jù)類型必須一致,如果遇到賦值號兩邊的數(shù)據(jù)類型不一致的情況,就需要把右邊的數(shù)據(jù)類型轉(zhuǎn)換成左邊的數(shù)據(jù)類型。通常情況下,如果類型不一致,需要程序員在程序中進(jìn)行強制類型轉(zhuǎn)換,在某些特殊情況下,Java也可以自動進(jìn)行類型轉(zhuǎn)換。三、快捷賦值運算符運算符示例等價于+=a+=ba=a+b-=a-=ba=a-b*=a*=ba=a*b/=a/=

42、ba=a/b%=a%=ba=a%b&=a&=ba=a&b|=a|=ba=a|b運算符示例等價于=a=ba=ab=a=ba=a=a=ba=ab=a=ba=ab表2-8 快捷賦值運算符續(xù)表2.2.8 其他運算符運 算 符描 述? :一種簡化的條件判斷語句定義數(shù)組,創(chuàng)建數(shù)組,以及訪問數(shù)組元素.訪問對象的成員函數(shù)和成員變量(參數(shù)1,參數(shù)2,.)函數(shù)的參數(shù),多個參數(shù)之間以逗號分隔(變量類型)強制類型轉(zhuǎn)換new創(chuàng)建新對象或新數(shù)組instanceof判斷對象是否是類的一個實例2.2.9 運算符的優(yōu)先級優(yōu)先級類型運算符1后綴運算符 . (參數(shù)) a+ a-2一元運算符+a -a -a !3新建與類型轉(zhuǎn)換new

43、 (變量類型)4乘除法* / %5加減法+ -6移位 7關(guān)系運算符 = instanceof8相等與不等= !=9按位與&10按位異或11按位或|12邏輯與&13邏輯或|14條件判斷? :15賦值= += -= *= /= %= &= = |= = =表2-10 運算符的優(yōu)先級2.3 流程控制2.3.1 任務(wù)2.5 根據(jù)條件輸出一、任務(wù)引入 當(dāng)編寫程序的時候,在沒有流程控制語句的情況下,Java程序是按照源代碼中每條語句出現(xiàn)的順序一條一條順序執(zhí)行的。而流程控制語句的作用就是讓語句不按照順序執(zhí)行,包括分支控制語句、循環(huán)控制語句和中斷控制語句。首先請看下面的例子:二、任務(wù)目標(biāo) 掌握J(rèn)ava中分支控

44、制語句的使用方法。三、任務(wù)內(nèi)容 編寫程序,計算數(shù)值變量a的正負(fù)號,以測試條件分支語句。四、程序清單/*源程序文件名:Ex0205.java*/public class Ex0205 public static void main(String args)int a = -23;if(a=0)System.out.println(a的值大于等于零。);elseSystem.out.println(a的值小于零。);五、運行結(jié)果六、任務(wù)小結(jié) 這是一個使用分支控制語句if()else的簡單程序,在變量a有一個確定值的情況下,使用if()語句判斷分支條件,也就是(a=0)是否成立,如果成立,程序就執(zhí)行

45、if()語句后面的大括號()里的語句;如果不成立,程序就執(zhí)行else后面的大括號里的語句。這樣,根據(jù)某一個判斷條件,我們可以讓程序分別執(zhí)行不同的語句,實現(xiàn)不同的操作。 除了ifelse這樣的分支控制語句外,還有if、ifelse ifelse以及switch等也可實現(xiàn)分支控制的語句,在下一個小節(jié)中我們來一起學(xué)習(xí)。2.3.2 分支控制語句一、if語句 if語句是最基本的分支控制語句,它可以讓程序根據(jù)某些條件選擇性地執(zhí)行語句。if語句的形式如下: if(關(guān)系表達(dá)式)語句 它的含義是:如果關(guān)系表達(dá)式的值為true,則執(zhí)行后面大括號里的語句,否則就不執(zhí)行大括號里的語句。 二、ifelse語句 有時,程

46、序需要控制當(dāng)條件滿足和不滿足時分別執(zhí)行不同的語句,這時可以使用ifelse語句,通過判斷一個條件,可以決定程序到底執(zhí)行那些語句。具體應(yīng)用在任務(wù)2.5里面已經(jīng)很詳細(xì)了,這里不再贅述。三、ifelse嵌套 如果我們的程序需要有兩個以上的分支,那么單純的ifelse結(jié)構(gòu)就不能滿足需要了,這時我們可以使用嵌套的ifelse結(jié)構(gòu)。 四、switch語句switch語句用于處理多分支選擇,它的一般形式是:switch(intVar)case Var1 :語句1;break;case Var2 :語句2;break;case Varn :語句n;break;default:語句n+1;2.3.3 任務(wù)2.6

47、 循環(huán)多次輸出一、任務(wù)引入 程序設(shè)計中有時需要將一段代碼反復(fù)執(zhí)行,這時就需要用到循環(huán)控制語句。使用循環(huán)控制語句可以提高代碼的使用率,減輕程序員負(fù)擔(dān),增加程序運行效率,讓我們用很簡潔的語句完成重復(fù)的、復(fù)雜的操作。請看下面的例子:二、任務(wù)目標(biāo) 掌握J(rèn)ava中循環(huán)控制語句的使用方法和技巧。三、任務(wù)內(nèi)容 編寫程序,計算19、29、99的結(jié)果并輸出。四、程序清單/*源程序文件名:Ex0206.java*/public class Ex0206 public static void main(String args)for(int i = 1; i = 9; i+)System.out.println(i

48、+x9=+i*9);五、運行結(jié)果六、任務(wù)小結(jié) 按照以前的程序設(shè)計思路,要進(jìn)行9次計算和輸出,至少需要9條語句,分別計算19、2999的結(jié)果并輸出。但是這些語句里面,除了乘數(shù)有變化,而且是有規(guī)律的變化之外,其他的計算和輸出都是一樣的。所以我們使用了循環(huán)控制語句for,通過循環(huán)控制變量i,來控制計算時的乘數(shù)以及計算的次數(shù)。這樣,原本需要使用9條語句完成的程序,在這里被簡化為了一個for語句段。 for語句是常見的一種循環(huán)控制語句,另外,Java還提供了do.while和while兩種循環(huán)控制語句,下一個小節(jié)中我們將詳細(xì)介紹。2.3.4 循環(huán)控制語句一、for語句 for語句是最常用的一種循環(huán)控制語

49、句,它通常用于循環(huán)次數(shù)已知的情況。for語句的一般格式如下: for(初始化表達(dá)式;循環(huán)條件表達(dá)式;迭代表達(dá)式) 循環(huán)體 二、while語句 while語句實現(xiàn)“當(dāng)”型循環(huán),即先判斷循環(huán)條件,如果條件滿足,則執(zhí)行循環(huán)體,否則就結(jié)束循環(huán)。while語句的一般格式如下: while(條件表達(dá)式) 循環(huán)體 三、do.while語句 do.while語句的判斷過程與while語句正好相反,它是先執(zhí)行循環(huán)體,再進(jìn)行判斷以決定是否進(jìn)行下一次循環(huán)。do.while語句的一般格式如下: do 循環(huán)體 while(條件表達(dá)式);2.3.5 任務(wù)2.7 從循環(huán)中跳出一、任務(wù)引入 在一些循環(huán)結(jié)構(gòu)中,我們可能遇到某種

50、情況,需要中止循環(huán),但Java沒有提供goto語句,不能使用直接跳轉(zhuǎn)語句跳出循環(huán),但是Java針對這種情況,提供了break、continue和return語句,用于不同情況下的中斷控制。比如下面的例子:二、任務(wù)目標(biāo)掌握J(rèn)ava中中斷控制語句的使用方法。三、任務(wù)內(nèi)容設(shè)計函數(shù),求100200間的所有素數(shù)。四、程序清單/*源程序文件名:Ex0207.java*/public class Ex0207 public static void main(String args)int n = 0;outer: for(int i = 101; i 200; i+)int k = 15;for(int j

51、 = 2; j = k; j+)if(i%j=0)continue outer;System.out.print( +i);n+;if(n10)continue;System.out.println();n = 0;五、運行結(jié)果六、任務(wù)小結(jié) 在這個任務(wù)里,我們使用嵌套的for語句,其中外層for語句用于控制變量i,也就是用來判斷是否是素數(shù)的那個數(shù)的遞增,內(nèi)層for語句用于控制對i是否是素數(shù)的判斷。 2.3.6 中斷控制語句 一、break語句 在switch語句中,break用來終止switch語句的執(zhí)行,程序流程轉(zhuǎn)到switch語句塊后的第一條語句。同樣在循環(huán)語句for、while和dowh

52、ile中,break將立即終止正在執(zhí)行的循環(huán),程序流程轉(zhuǎn)到循環(huán)語句后的第一條語句。 二、continue語句 continue語句只能用在循環(huán)語句中,用于中斷本次循環(huán),開始下一次循環(huán)。在任務(wù)2.7中,第二個continue語句就是中斷一次循環(huán),即不執(zhí)行后面的輸出和賦值語句,開始下一次循環(huán)。三、return語句 return語句從當(dāng)前函數(shù)中返回到調(diào)用該函數(shù)的語句處,并繼續(xù)執(zhí)行后面的語句(有關(guān)函數(shù)的內(nèi)容將在第三章中介紹)。 2.4 數(shù) 組2.4.1 任務(wù)2.8 存儲學(xué)生單科成績一、任務(wù)引入 在前面的學(xué)習(xí)中,我們知道了一個變量可以存儲一個數(shù)據(jù),但是很多程序中的數(shù)據(jù)量很大,如果每一個數(shù)據(jù)都用一個變量來

53、存儲的話,在變量的命名和使用上會有很大的麻煩。當(dāng)這些數(shù)據(jù)類型相同的時候,我們可以使用數(shù)組來存儲,這樣可以簡化程序設(shè)計的難度。請看下面的例子:二、任務(wù)目標(biāo) 掌握J(rèn)ava中一維數(shù)組的使用方法。三、任務(wù)內(nèi)容 編寫程序,統(tǒng)計全班學(xué)生單科成績的合格率。四、程序清單/*源程序文件名:Ex0208.java*/public class Ex0208 public static void main(String args)int mathRecord = 76,56,89,100,60,70,61,59,0,88,94,99;int Total = mathRecord.length;double pass

54、= 0;for(int i = 0; i =60)pass+;System.out.println(全班總?cè)藬?shù)為:+Total);System.out.println(及格率為:+pass/Total*100+);五、運行結(jié)果六、任務(wù)小結(jié) 數(shù)組可以用來存儲數(shù)據(jù)類型一致的多個數(shù)據(jù),通常和for循環(huán)配合,訪問數(shù)組中的每一個元素。數(shù)組元素的標(biāo)號(數(shù)組下標(biāo))從0開始,這和其他一些程序設(shè)計語言有所不同。數(shù)組的長度可以用“數(shù)組名.length”來獲得,但不能使用這個方法在程序中重新設(shè)置數(shù)組長度。2.4.2 一維數(shù)組的使用一、一維數(shù)組的聲明 一維數(shù)組的聲明方式有兩種: 數(shù)據(jù)類型 數(shù)組名; 數(shù)據(jù)類型 數(shù)組名;

55、二、一維數(shù)組的初始化 在使用已經(jīng)聲明好的數(shù)組之前,需要對其進(jìn)行初始化操作,即為數(shù)組分配內(nèi)存空間,并為每個數(shù)組元素設(shè)置一個默認(rèn)的初始化值。這里需要使用到運算符new,其格式如下: 數(shù)組名 = new 數(shù)據(jù)類型數(shù)組長度三、一維數(shù)組的使用 我們可以通過下面的格式訪問數(shù)組中的任意一個元素: 數(shù)組名下標(biāo)2.4.3 任務(wù)2.9 存儲學(xué)生多科成績一、任務(wù)引入 任務(wù)2.8為大家展示了怎樣使用一維數(shù)組來存儲學(xué)生的單科成績,接下來我們很容易想到,如果有多科成績,是否也可以用一個數(shù)組來存儲呢?答案是肯定的,那就是使用二維數(shù)組。請看下面的例子:二、任務(wù)目標(biāo) 掌握J(rèn)ava中多維數(shù)組的使用方法。三、任務(wù)內(nèi)容 編寫程序,使

56、用二維數(shù)組統(tǒng)計全班學(xué)生多科成績的合格率。四、程序清單/*源程序文件名:Ex0209.java*/public class Ex0209 public static void main(String args)int allRecord = 70,85,59,65,59,60, 90,95,65,50,50,50;double pass = new double2;int Total = allRecord.length;for(int i = 0; i Total; i+)for(int j = 0; j = 60)passj+;System.out.println(全班總?cè)藬?shù)為:+Total

57、);System.out.println(語文及格率為:+ pass0/Total*100+ );System.out.println(數(shù)學(xué)及格率為:+ pass1/Total*100+ );五、運行結(jié)果六、任務(wù)小結(jié) 與一維數(shù)組類似,多維數(shù)組通常也和for循環(huán)配合使用,以訪問多維數(shù)組中的每一個元素,只是根據(jù)數(shù)組維數(shù)的多少,而使用多重循環(huán)來達(dá)到目的。多維數(shù)組的定義和使用與一維數(shù)組基本一致,只是由于多維數(shù)組的復(fù)雜性,在使用過程中要多加注意。2.4.4 多維數(shù)組的使用一、二維數(shù)組的聲明 二維數(shù)組的聲明方式為: 數(shù)據(jù)類型 數(shù)組名;二、二維數(shù)組的初始化 對二維數(shù)組來說,分配內(nèi)存空間有兩種方法。一種是直接

58、分配,即一次性指定兩個維數(shù)上的長度,如: int a = new int23; 這樣分配后的數(shù)組相當(dāng)于一個矩陣,其每一行的長度是一樣的。三、二維數(shù)組的使用 同一維數(shù)組類似,我們可以通過給出二維數(shù)組的兩個下標(biāo)來訪問數(shù)組中的元素。2.5 字 符 串2.5.1 任務(wù)2.10 使用字符串對象一、任務(wù)引入 在許多語言中,字符串是一種基本數(shù)據(jù)類型,但在Java語言中,字符串是一種對象,我們可以通過使用String或StringBuffer兩個類來對其進(jìn)行處理。請看下面的例子:二、任務(wù)目標(biāo) 掌握J(rèn)ava中String類的使用方法。三、任務(wù)內(nèi)容 編寫程序,對String對象進(jìn)行連接、替換、比較和查找等操作。四

59、、程序清單/*源程序文件名:Ex0210.java*/public class Ex0210 public static void main(String args)String s1 = Hello, world!;String s2 = new String(Hello, world!);s2 = +s2+ ;String s3 = s1.replace(w,W);if(s3.equals(s1)System.out.println(s3等于s1。);elseSystem.out.println(s3不等于s1。);if(s3.equalsIgnoreCase(s1)System.out.

60、println(s3等于s1(忽略大小寫)。);elseSystem.out.println(s3不等于s1(忽略大小寫)。);System.out.println(s2去除首尾空格后:+s2.trim();System.out.println(s1中第一個o字母出現(xiàn)在第+ s1.indexOf(o)+位置。);System.out.println(s1中第一個e字母和最后一個l字母之間的字符串是:+ s1.substring(s1.indexOf(e), s1.lastIndexOf(l);五、運行結(jié)果六、任務(wù)小結(jié) 在這個任務(wù)中我們可以看到,由于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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論