版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java語(yǔ)言程序設(shè)計(jì)JavaLanguageProgramming全套PPT課件第一章Java語(yǔ)言概述第一章Java語(yǔ)言概述本章主要內(nèi)容Java語(yǔ)言的發(fā)展歷史;Java語(yǔ)言的特點(diǎn);Java語(yǔ)言的工作原理;Java程序的運(yùn)行環(huán)境;Java程序及其實(shí)現(xiàn);Java語(yǔ)言集成開發(fā)環(huán)境。1.1Java語(yǔ)言的發(fā)展歷史1.2Java語(yǔ)言的特點(diǎn)1.3Java語(yǔ)言的工作原理第1章第1章1.4Java程序的運(yùn)行環(huán)境1.5Java程序及其實(shí)現(xiàn)1.6Java語(yǔ)言集成開發(fā)環(huán)境1.7本章小結(jié)
Java語(yǔ)言是在C++語(yǔ)言已廣泛使用,Internet(因特網(wǎng))發(fā)展迅速的歷史背景下出現(xiàn)的,因此,Java語(yǔ)言源于C++語(yǔ)言,又與Internet同步發(fā)展。
1991年,美國(guó)Sun公司成立了一個(gè)開發(fā)面向家電的編程軟件小組,項(xiàng)目名稱為“Green”,軟件名稱為“Oak”(一種橡樹名)。當(dāng)時(shí)C++語(yǔ)言已經(jīng)比較成熟,自然成為他們開發(fā)軟件的首選語(yǔ)言。后來,發(fā)現(xiàn)C++語(yǔ)言比較煩瑣,并且安全性較差,不能滿足要求,于是決定開發(fā)一種新的語(yǔ)言,當(dāng)時(shí)取名為“Oak”。當(dāng)時(shí),Oak并沒有引起人們的注意,項(xiàng)目最初的目的是想開發(fā)一種獨(dú)立于平臺(tái)的軟件技術(shù),而且在網(wǎng)絡(luò)出現(xiàn)之前,Oak可以說是默默無聞,甚至差點(diǎn)被丟棄。但是,網(wǎng)絡(luò)的出現(xiàn)改變了Oak的命運(yùn),Sun公司的一位創(chuàng)始人認(rèn)為Oak的安全性和分布式系統(tǒng)非常適用于Internet,于是采用了Internet上免費(fèi)使用的策略,后來經(jīng)過發(fā)展和完善,1995年Oak改名為Java。
Java語(yǔ)言發(fā)布后,發(fā)展非常順利。于是Sun公司很快公布了完整的Java語(yǔ)言技術(shù)規(guī)范,并在WWW廠商的支持下,用Java語(yǔ)言編寫Applet小程序在瀏覽器內(nèi)部的嵌入也獲得了成功。不久,Sun公司又推出一套全新的基于Java語(yǔ)言的開放式多媒體格式和應(yīng)用程序編程接口(API),從而為Java語(yǔ)言的進(jìn)一步推廣開創(chuàng)了美好前景。由于Java語(yǔ)言具有較好的安全性、可移植性、與平臺(tái)無關(guān)等特性,因此,它為Internet的應(yīng)用開辟了一個(gè)新時(shí)代,而Internet的發(fā)展又促進(jìn)了Java語(yǔ)言的開發(fā)與利用。1.Java語(yǔ)言是簡(jiǎn)單的2.Java語(yǔ)言是面向?qū)ο蟮?.Java語(yǔ)言是分布式的4.Java語(yǔ)言的可移植性5.Java語(yǔ)言的平臺(tái)無關(guān)性6.Java語(yǔ)言的穩(wěn)定性和安全性7.Java語(yǔ)言是多線程的8.Java語(yǔ)言是高性能的9.Java語(yǔ)言是動(dòng)態(tài)的
Sun公司設(shè)計(jì)Java語(yǔ)言的目標(biāo)是實(shí)現(xiàn)良好的跨平臺(tái)性。為了實(shí)現(xiàn)這一目標(biāo),Sun公司提出了—種Java虛擬機(jī)(JVM)機(jī)制,其工作原理流程圖如圖1-1所示。圖1-1Java虛擬機(jī)的工作原理流程圖
Java虛擬機(jī)是軟件模擬的計(jì)算機(jī),Java虛擬機(jī)是編譯和運(yùn)行Java程序等其他命令及運(yùn)行環(huán)境的總稱,可以在任何處理器上(如在計(jì)算機(jī)或其他電子設(shè)備中)安全地執(zhí)行保存在.class文件中的字節(jié)碼。Java虛擬機(jī)的“機(jī)器碼”保存在.class文件中,有時(shí)也可以稱為字節(jié)碼文件。字節(jié)碼實(shí)際上是一種與平臺(tái)無關(guān)的偽代碼,這些偽代碼最終是在本地的計(jì)算機(jī)平臺(tái)上運(yùn)行的,但Java程序就好像是在這些Java命令的基礎(chǔ)上運(yùn)行的。因此,這些Java命令的集合好像是采用軟件技術(shù)實(shí)現(xiàn)的一種虛擬計(jì)算機(jī),這就是Java虛擬機(jī)名稱的由來。
Java程序的跨平臺(tái)性主要是指字節(jié)碼文件可以在任何有Java虛擬機(jī)的計(jì)算機(jī)或電子設(shè)備上運(yùn)行,Java虛擬機(jī)中的解釋器負(fù)責(zé)將字節(jié)碼文件解釋成特定的機(jī)器碼進(jìn)行運(yùn)行。因此在運(yùn)行時(shí),Java源程序需要通過編譯器編譯成為.class文件。Java虛擬機(jī)的建立需要針對(duì)不同的軟、硬件平臺(tái)來實(shí)現(xiàn),既要考慮處理器的型號(hào),也要考慮操作系統(tǒng)的種類。在SPARC結(jié)構(gòu)、X86結(jié)構(gòu)、MIPS和PPC等嵌入式處理芯片上,在UNIX、Linux、Windows和部分實(shí)時(shí)操作系統(tǒng)上都可安裝Java虛擬機(jī)。
1.JavaSE
JavaSE(Java2PlatformStandardEdition,簡(jiǎn)稱J2SE)稱為Java標(biāo)準(zhǔn)版本或Java標(biāo)準(zhǔn)平臺(tái)。J2SE提供了標(biāo)準(zhǔn)的JavaDevelopmentKit(JDK),利用該平臺(tái)可以開發(fā)Java客戶端程序,主要用于桌面應(yīng)用軟件的編程。目前較新的JDK版本為1.8。1.4.1平臺(tái)簡(jiǎn)介
2.JavaEE
JavaEE(Java2PlatformEnterpriseEdition,簡(jiǎn)稱J2EE)稱為平臺(tái)企業(yè)版或Java企業(yè)平臺(tái)。J2EE是一套全然不同于傳統(tǒng)應(yīng)用開發(fā)技術(shù)的架構(gòu),包含許多組件,主要用于可簡(jiǎn)化且規(guī)范應(yīng)用系統(tǒng)的開發(fā)與部署,進(jìn)而提高可移植性、安全與再用價(jià)值。
3.JavaME
JavaME(Java2PlatformMicroEdition,簡(jiǎn)稱J2ME)是Java2的一個(gè)組成部分,它與J2SE、J2EE并稱。根據(jù)Sun公司的定義,J2ME是一種高度優(yōu)化的Java運(yùn)行環(huán)境,主要針對(duì)消費(fèi)類電子設(shè)備的,例如:蜂窩電話、可視電話、數(shù)字機(jī)頂盒和汽車導(dǎo)航系統(tǒng)等。J2ME技術(shù)在1999年的JavaOneDeveloperConference大會(huì)上正式推出,它將Java語(yǔ)言的與平臺(tái)無關(guān)的特性移植到小型電子設(shè)備上,允許移動(dòng)無線設(shè)備之間共享應(yīng)用程序。1.4.1平臺(tái)簡(jiǎn)介
1.下載并安裝JDK登錄Sun公司的官方網(wǎng)站免費(fèi)下載JDK,在網(wǎng)站的Download菜單中選擇JavaSE,接受許可協(xié)議后,選擇相應(yīng)的JDK版本即可。雙擊下載后的文件圖標(biāo)后,會(huì)出現(xiàn)安裝向?qū)Ы缑?,接受軟件安裝協(xié)議,出現(xiàn)選擇安裝路徑界面。1.4.2安裝JavaSE平臺(tái)
2.配置環(huán)境變量
JDK平臺(tái)提供的編譯器(javac.exe)和解釋器(java.exe)位于Java安裝目錄的\bin文件夾中,為了能在任何目錄均能使用編譯器和解釋器,應(yīng)在系統(tǒng)屬性中設(shè)置Path環(huán)境變量名。對(duì)于Windows7/XP,可以用鼠標(biāo)右鍵單擊“計(jì)算機(jī)”圖標(biāo),在彈出的快捷菜單中選擇“屬性→系統(tǒng)屬性→高級(jí)→環(huán)境變量”,添加系統(tǒng)環(huán)境變量的值(本教材系統(tǒng)變量Path的變量值為C:\ProgramFiles\Java\jdk1.7.0_45\bin)加入即可,如圖1-2、圖1-3、圖1-4所示。1.4.2安裝JavaSE平臺(tái)圖1-2系統(tǒng)屬性對(duì)話框圖1-3環(huán)境變量對(duì)話框圖1-4編輯系統(tǒng)變量對(duì)話框需要注意的是,在編輯環(huán)境變量的值時(shí),新加入的值要與已有的數(shù)值用分號(hào)分隔,即如果新加入的值是最后一個(gè)值,需要和前面的值用分號(hào)分隔;如果新加入的值是前面的值,則需要和后面的值用分號(hào)分隔。
Java語(yǔ)言程序可分為兩類:一類是控制臺(tái)應(yīng)用程序JavaApplication,它是一種獨(dú)立運(yùn)行的完整程序;另一類是基于瀏覽器運(yùn)行的程序JavaApplet,又稱為小程序,它不是獨(dú)立運(yùn)行的完整程序,需要在瀏覽器這種特定的環(huán)境下運(yùn)行。本章節(jié)會(huì)給大家介紹JavaApplication的結(jié)構(gòu)特點(diǎn),而JavaApplet程序?qū)⒃诤竺嬲鹿?jié)中介紹。1.5.1JavaApplication程序舉例
JavaApplication程序的開發(fā)主要有三步:編輯、編譯和解釋運(yùn)行。下面通過簡(jiǎn)單的例子來了解并掌握J(rèn)avaApplication程序的結(jié)構(gòu)、書寫方式與運(yùn)行過程。
1.編輯Java源程序編輯就是使用編輯器編寫Java源代碼,編輯器可以是記事本,也可以是JDE工具。本章使用記事本編寫程序。新建一個(gè)記事本文件并命名為Exam1_1j.ava,注意把擴(kuò)展名改為j.ava。擴(kuò)展名為j.ava的文件又稱Java源文件?!纠?-1】簡(jiǎn)單的JavaApplication程序。(1)程序Exam1_1j.ava。publicclassExam1_1{publicstaticvoidmain(Stringargs[]){System.out.println(″歡迎學(xué)習(xí)JAVA語(yǔ)言″);}}
(2)程序分析。將該程序中出現(xiàn)的各語(yǔ)句按其順序說明如下:
Java程序由若干個(gè)類組成,該程序中只有一個(gè)類,名字為Exam1_1,在Java程序中聲明類的關(guān)鍵字是class,定義類的格式如下:
<修飾符>class<類名>
{
<類體>
}該程序中,Exam1_1類體中只定義一個(gè)主方法publicstaticvoidmain(String
args[]),該方法無返回值(void),有一個(gè)形式參數(shù),參數(shù)類型為字符串?dāng)?shù)組args[],該方法是靜態(tài)的(static),該方法的訪問權(quán)限是公共的(public),即該程序中的所有的類都可以使用該方法。在主方法體中,只有一條語(yǔ)句:
System.out.println(“歡迎學(xué)習(xí)JAVA語(yǔ)言”);該語(yǔ)句的功能是輸出并顯示一個(gè)字符串“歡迎學(xué)習(xí)JAVA語(yǔ)言”。
2.編譯生成字節(jié)碼文件
Java語(yǔ)言源程序和其他高級(jí)語(yǔ)言的源程序一樣,都不能直接在計(jì)算機(jī)上運(yùn)行。所以Java源程序在運(yùn)行之前,都要把它翻譯成機(jī)器可以直接識(shí)別的指令代碼,這個(gè)過程稱為編譯。
Java語(yǔ)言源程序是屬于編譯解釋型的,需要先將Java源程序經(jīng)過編譯器生成二進(jìn)制的字節(jié)碼文件,后綴名為.class,計(jì)算機(jī)不能直接識(shí)別該文件,還需要將它交給Java解釋器進(jìn)行解釋執(zhí)行。
Java語(yǔ)言源程序的編譯過程主要進(jìn)行兩項(xiàng)工作:一是通過編譯程序檢查Java源程序中是否有語(yǔ)法錯(cuò)誤,如果發(fā)現(xiàn)錯(cuò)誤,便報(bào)告已經(jīng)發(fā)現(xiàn)的錯(cuò)誤,修改后再編譯,直到未發(fā)現(xiàn)錯(cuò)誤,才生成字節(jié)碼文件;二是通過編譯來引入Java類庫(kù)中已編好的模塊,為了方便編程,Java類庫(kù)中有若干個(gè)包,每個(gè)包中又有若干個(gè)模塊,每個(gè)模塊是一個(gè)具有某種功能的類,它們都是字節(jié)碼形式的程序,用戶編程時(shí)根據(jù)需要利用import語(yǔ)句將某些模塊引入程序中。由于本章中的源程序文件Exam1_1j.ava存放在D盤下(D:\Exam1_1j.ava),所以該程序的編譯命令如下:
D:\>javacExam1_1j.ava經(jīng)過編譯后,生成字節(jié)碼文件Exam1_1.class。編譯時(shí)要注意:
(1)在命令javac后一定要輸入空格符。
(2)源文件要存放在當(dāng)前目錄下。
3.解釋運(yùn)行字節(jié)碼文件運(yùn)行一個(gè)編譯好的字節(jié)碼文件,需要使用Java解釋器java.exe,以例題1-1為例,解釋運(yùn)行字節(jié)碼文件Exam1_1.class的命令格式如下:
D:\>javaExam1_1解釋運(yùn)行后輸出結(jié)果如圖1-5所示。圖1-5輸出結(jié)果解釋運(yùn)行時(shí)要注意:
(1)在命令中書寫要運(yùn)行的字節(jié)碼文件時(shí),不要給出后綴.class,否則運(yùn)行時(shí)會(huì)出錯(cuò)。
(2)當(dāng)運(yùn)行有多個(gè)類程序編譯后生成的多個(gè)字節(jié)碼文件時(shí),只需運(yùn)行主類的字節(jié)碼文件即可。在1.5.1中舉例說明了JavaApplication程序,并對(duì)程序中的每一條語(yǔ)句進(jìn)行了分析,雖然比較簡(jiǎn)單,但是也表示出了JavaApplication程序的結(jié)構(gòu),同時(shí)也給出了JavaApplication程序的書寫格式。
1.JavaApplication程序結(jié)構(gòu)特點(diǎn)
(1)JavaApplication程序由一個(gè)或多個(gè)文件組成,每個(gè)文件又由一個(gè)或多個(gè)類構(gòu)成,每個(gè)類中由若干個(gè)方法和變量組成。
(2)在一個(gè)JavaApplication程序中,僅有一個(gè)主方法,JavaApplication程序就是從主方法開始執(zhí)行的。
(3)在一個(gè)JavaApplication程序中,只有一個(gè)主文件,主文件即是包含主方法的文件。1.5.2JavaApplication程序結(jié)構(gòu)特點(diǎn)在JavaApplication程序編寫中需要注意以下幾點(diǎn):
(1)程序名必須與主類名相同,例如例題Exam1_1中,主類(含有主方法的類)名字為Exam1_1,所以該文件名字為Exam1_1j.ava。
(2)JavaApplication程序是區(qū)分大、小寫字母的。
(3)JavaApplication程序中所有方法都是屬于某個(gè)類的。
2.JavaApplication程序書寫上的特點(diǎn)
(1)使用變量名、對(duì)象名、方法名等標(biāo)識(shí)符時(shí)要有意義,盡量做到“見名知義”。
(2)使用空行來分隔不相關(guān)的語(yǔ)句。
(3)編寫代碼時(shí),應(yīng)合理進(jìn)行縮進(jìn)和對(duì)齊。
(4)一條語(yǔ)句應(yīng)盡量寫在一行,但是不要在同一行上編寫多條語(yǔ)句。
(5)適當(dāng)添加注釋信息,增加程序的可讀性。
1.Eclipse簡(jiǎn)介
Eclipse最初是由IBM公司開發(fā)的替代商業(yè)軟件Visual
AgeForJava的下一代IDE開發(fā)環(huán)境,2001年11月貢獻(xiàn)給開源社區(qū),由非營(yíng)利軟件供應(yīng)商聯(lián)盟Eclipse基金會(huì)(EclipseFoundation)管理。2003年,Eclipse3.0選擇OSGi服務(wù)平臺(tái)規(guī)范為運(yùn)行時(shí)架構(gòu)。2007年6月,發(fā)布3.3穩(wěn)定版;2008年6月,發(fā)布代號(hào)為Ganymede的3.4版;2009年6月,發(fā)布代號(hào)為Galileo的3.5版;2010年6月,發(fā)布代號(hào)為Helios的3.6版;2011年6月,發(fā)布代號(hào)為Indigo的3.7版;2012年6月,發(fā)布代號(hào)為Juno的4.2版;2013年6月,發(fā)布代號(hào)為Kepler的4.3版;2014年6月,發(fā)布代號(hào)為L(zhǎng)una的4.4版;2015年6月,項(xiàng)目發(fā)布代號(hào)為Mars的4.5版。1.6.1Eclipse簡(jiǎn)介與下載
2.Eclipse下載用戶可根據(jù)自身需要在Eclipse官網(wǎng)下載適用的版本,其下載界面如圖1-6所示。圖1-6Eclipse下載界面
1.Eclipse啟動(dòng)下載Eclipse后,雙擊下載文件夾中的文件“eclipse.exe”即可啟動(dòng)運(yùn)行,啟動(dòng)界面如圖1-7所示。1.6.2Eclipse使用圖1-7Eclipse啟動(dòng)界面
2.利用Eclipse運(yùn)行Java程序
(1)新建JavaProject單擊“File→New→JavaProject”選項(xiàng),如圖1-8所示。圖1-8新建JavaProject
(2)新建Package右擊新建的工程,選擇“New→Package”選項(xiàng),如圖1-9所示。圖1-9新建Package
(3)新建Class右擊新建的包,選擇“New→Class”選項(xiàng),如圖1-10所示。圖1-10新建Class
(4)編寫Java程序代碼在代碼編輯區(qū)編寫Java程序代碼,如圖1-11所示。圖1-11編寫代碼窗口
(5)保存運(yùn)行Java程序單擊“Run→Run”命令,運(yùn)行Java程序,如圖1-12所示。圖1-12運(yùn)行Java程序本章是對(duì)Java程序開發(fā)以及后續(xù)學(xué)習(xí)的一個(gè)鋪墊,通過本章的學(xué)習(xí),能夠初步了解Java語(yǔ)言的基本知識(shí),本章應(yīng)該了解和掌握一些內(nèi)容?!馢ava語(yǔ)言的發(fā)展歷史●Java語(yǔ)言的特點(diǎn)●Java語(yǔ)言的工作原理●Java程序運(yùn)行環(huán)境●Java程序及其實(shí)現(xiàn)●Java語(yǔ)言集成開發(fā)環(huán)境Java語(yǔ)言程序設(shè)計(jì)JavaLanguageProgramming第二章Java語(yǔ)言語(yǔ)法基礎(chǔ)第二章Java語(yǔ)言語(yǔ)法基礎(chǔ)本章主要內(nèi)容Java語(yǔ)言的詞法規(guī)則;Java語(yǔ)言的數(shù)據(jù)類型;控制語(yǔ)句;數(shù)組;字符串。2.1Java語(yǔ)言的語(yǔ)法規(guī)則2.2控制語(yǔ)句2.3數(shù)組第1章第2章2.4字符串2.5本章小結(jié)
Java語(yǔ)言使用的是統(tǒng)一代碼,即國(guó)際字符格式標(biāo)準(zhǔn)(Unicode)。Unicode字符集采用16位編碼,其前256個(gè)字符與ASCII字符集完全一致。除了數(shù)字0~9、英文字母A~Z、a~z、下劃線(_)、美元符號(hào)($)以及+、-、*、/等ASCII字符之外,Unicode字符集還提供了其他語(yǔ)言文字字符,如漢字、希臘文、韓文等。在編譯器的詞法分析階段,把源代碼分為單詞和空白符。Java語(yǔ)言的單詞(又稱為詞法符號(hào))包括標(biāo)識(shí)符、關(guān)鍵字、分隔符、注釋符、常量和變量以及運(yùn)算符與表達(dá)式??瞻追褪强崭穹?、水平制表符、換行符等總稱。空白符用來指示單詞的起始和終止位置,用作單詞的分隔符。
Java標(biāo)識(shí)符是以字母開頭的字母數(shù)字序列。標(biāo)識(shí)符是用戶定義的單詞,用于標(biāo)識(shí)類、對(duì)象、方法、變量、接口和自定義數(shù)據(jù)類型等。標(biāo)識(shí)符的命名規(guī)則如下:
(1)Java語(yǔ)言規(guī)定標(biāo)識(shí)符由字母(大、小寫英文字母)、數(shù)字(0~9)、下劃線(_)、美元符號(hào)($)組成的字符序列。
(2)標(biāo)識(shí)符第一個(gè)字符不能是數(shù)字。
(3)標(biāo)識(shí)符區(qū)分字母大、小寫,或者說標(biāo)識(shí)符是大、小寫敏感的。
(4)標(biāo)識(shí)符不能使用Java語(yǔ)言中的關(guān)鍵字。
(5)標(biāo)識(shí)符長(zhǎng)度不受限制。符合上述規(guī)則的標(biāo)識(shí)符都是正確的Java標(biāo)識(shí)符。正確的標(biāo)識(shí)符舉例如下:
name,age,salary,my_name,$points,sum12.1.1標(biāo)識(shí)符而以下標(biāo)識(shí)符則是錯(cuò)誤的標(biāo)識(shí)符:
2x//標(biāo)識(shí)符不能以數(shù)字開頭
mysalary//標(biāo)識(shí)符中不能有空格
x+y//+既不是Java語(yǔ)言中的字母,也不是Java語(yǔ)言中的數(shù)字,不能使用
testl-2-3//-既不是Java語(yǔ)言中的字母,也不是Java語(yǔ)言中的數(shù)字,不能使用
class//標(biāo)識(shí)符不能用關(guān)鍵字
Java&JSP//&既不是Java語(yǔ)言中的字母,也不是Java語(yǔ)言中的數(shù)字,不能使用在Java語(yǔ)言規(guī)范中,有些標(biāo)識(shí)符雖然正確,但是不提倡使用,應(yīng)該規(guī)范化書寫。因?yàn)椴灰?guī)范的命名習(xí)慣會(huì)大大降低代碼的可讀性。在Java規(guī)范中約定:
(1)類名和接口名,每個(gè)單詞的首字母大寫,其余字母小寫。如MyClass、HelloWorld、Time。
(2)方法名,首字母小寫,其余單詞的首字母大寫。如myName、setTime、date。
(3)常量名,基本數(shù)據(jù)類型的常量名全部使用大寫字母,單詞之間用下劃線分隔,對(duì)象常量可大小混寫。如SIZE_NAME。
(4)變量名,可大小混寫,首字符小寫,字間分隔符用單詞的首字母大寫。如distance、myName。關(guān)鍵字(Keyword)是Java語(yǔ)言保留的具有特定含義的英文單詞。每一個(gè)關(guān)鍵字都有一種特定含義,用戶不能把關(guān)鍵字作為標(biāo)識(shí)符來使用。Java語(yǔ)言中的常用關(guān)鍵字及其含義見表2-1。2.1.2關(guān)鍵字上述關(guān)鍵字都是用小寫字母表示。為了便于閱讀,程序也需要如同自然語(yǔ)言一樣恰當(dāng)?shù)厥褂梅指舴?。Java語(yǔ)言常用的分隔符如下所述:
(1)空白符空白符常用來作為單詞之間的分隔符,空白符包括空格符、換行符和水平制表符等。
(2)分號(hào)在語(yǔ)句結(jié)束以及for控制語(yǔ)句中可以使用。
(3)逗號(hào)在聲明多個(gè)相同數(shù)據(jù)類型變量或?qū)ο笾g,或在方法中的參數(shù)之間等都可以使用。
(4)冒號(hào)用在語(yǔ)句標(biāo)號(hào)與語(yǔ)句之間的分隔符。
(5)花括號(hào)在聲明類、方法體、語(yǔ)句塊以及初始化數(shù)組中的值時(shí)使用。2.1.3分隔符
Java語(yǔ)言提供如下三種注釋方式:
(1)行注釋符這種注釋符用來注釋一行信息,即以“//”開始一直到行尾都是注釋信息。
(2)多行注釋符這種注釋符用于多行注釋,“/*”表示注釋開始,“*/”表示注釋結(jié)束,在“/*”和“*/”之間是注釋信息,常用來說明方法的功能。
(3)文檔注釋符這種注釋符放在一個(gè)變量或方法說明前面,表示該段注釋信息應(yīng)包含在自動(dòng)生成的任何文件中,注釋信息以“/**”開始到“*/”結(jié)束。2.1.4注釋符程序在執(zhí)行的過程中需要調(diào)用數(shù)據(jù)進(jìn)行運(yùn)算,同時(shí)也需要存儲(chǔ)數(shù)據(jù)。獲取的數(shù)據(jù)可能從鍵盤輸入,也可能從文件中取出,甚至可能從網(wǎng)絡(luò)上得到。在程序的執(zhí)行過程中,數(shù)據(jù)存儲(chǔ)在內(nèi)存中,便于程序的使用。數(shù)據(jù)是描述客觀事物的數(shù)字、字符以及所有能輸入計(jì)算機(jī)中并能被計(jì)算機(jī)接收的各種符號(hào)集合。數(shù)據(jù)是計(jì)算機(jī)程序的處理對(duì)象的狀態(tài)。類型是具有相同邏輯意義的一組值的集合。數(shù)據(jù)類型是指一個(gè)類型和定義在這個(gè)類型上的操作集合。數(shù)據(jù)類型定義了數(shù)據(jù)的性質(zhì)、取值范圍以及對(duì)數(shù)據(jù)所能進(jìn)行的運(yùn)算和操作。程序中的每一個(gè)數(shù)據(jù)都屬于一種數(shù)據(jù)類型,決定了數(shù)據(jù)的類型也就相應(yīng)決定了數(shù)據(jù)的性質(zhì)以及對(duì)數(shù)據(jù)進(jìn)行的操作,同時(shí)數(shù)據(jù)也受到類型的保護(hù),確保對(duì)數(shù)據(jù)不進(jìn)行非法操作。Java語(yǔ)言中的數(shù)據(jù)類型分為兩大類:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,如圖2-1所示。2.1.5數(shù)據(jù)類型圖2-1Java語(yǔ)言中的數(shù)據(jù)類型
1.整型整型是具有固定上、下界的整數(shù),包括正整數(shù)、零和負(fù)整數(shù),與數(shù)學(xué)中的整數(shù)概念并不完全一樣。Java語(yǔ)言根據(jù)數(shù)據(jù)在內(nèi)存中占用的位數(shù)不同提供了4種整型,分別是byte、short、int和long,它們的位數(shù)遞增,表示數(shù)的范圍也越來越大,見表2-2。整型常量有3種表示形式:(1)十進(jìn)制整數(shù):如56、-24、0。(2)八進(jìn)制整數(shù):以0開頭的數(shù)是八進(jìn)制整數(shù),如017。(3)十六進(jìn)制整數(shù):以0x開頭的數(shù)是十六進(jìn)制整數(shù)。如0xl7、0x0、0xf、0xD。
2.浮點(diǎn)型浮點(diǎn)型是包含有小數(shù)部分的數(shù)值。Java語(yǔ)言中的浮點(diǎn)型按其取值范圍的不同可分為float(單精度浮點(diǎn)型)和double(雙精度浮點(diǎn)型)兩種,見表2-3。
Java語(yǔ)言用浮點(diǎn)型表示數(shù)學(xué)中的實(shí)數(shù),一個(gè)浮點(diǎn)數(shù)值包括整數(shù)部分和小數(shù)部分。浮點(diǎn)數(shù)有兩種表示方式:
(1)十進(jìn)制數(shù)表示法:由整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分組成。如1.0、123.45等。
(2)科學(xué)記數(shù)法:由數(shù)字和字母E或e組成,要求字母E或e前必須有數(shù)字,后面必須有整數(shù)。如0.12e3、-15E4等。在浮點(diǎn)型常量后加上f或F表示單精度浮點(diǎn)型。在浮點(diǎn)型常量后不加任何字符或加d或D表示雙精度浮點(diǎn)型。
3.字符型字符型(char)數(shù)據(jù)是由一對(duì)單引號(hào)括起來的單個(gè)字符或轉(zhuǎn)義字符,該字符是16位的Unicode碼。字符常量有兩種表示法:
(1)用單引號(hào)將ASCII字符括起來的值,如″M″。
(2)用單引號(hào)括起來的轉(zhuǎn)義字符,如'\n‘。
Java語(yǔ)言中常用轉(zhuǎn)義字符見表2-4。
char類型在Java語(yǔ)言中不常用,一般使用字符串類型。字符串類型是用一對(duì)雙引號(hào)括起來的字符序列,字符串由String類實(shí)現(xiàn)。
4.布爾型布爾型(
boolean)又稱邏輯類型,只有兩個(gè)取值:true(真)和false(假),它們?nèi)切?,?jì)算機(jī)內(nèi)部用8位來表示。Java語(yǔ)言不允許數(shù)值類型和布爾類型之間進(jìn)行轉(zhuǎn)換。在C/C++語(yǔ)言中,允許用數(shù)值表示,如用0表示false,非0表示true,而在Java語(yǔ)言中不允許這樣做。所有關(guān)系運(yùn)算的結(jié)果值都是布爾型的。布爾型也用于流程控制語(yǔ)句中的條件表達(dá)式,如if、for和while等語(yǔ)句中。
5.類型轉(zhuǎn)換
(1)隱式類型轉(zhuǎn)換對(duì)于由二元運(yùn)算中的算術(shù)運(yùn)算符組成的表達(dá)式,一般要求運(yùn)算符兩邊的兩個(gè)操作數(shù)的類型一致,如果兩者的類型不一致,則系統(tǒng)會(huì)自動(dòng)轉(zhuǎn)換為運(yùn)算符較高(即取值范圍較大)一邊的類型,這便是隱式類型轉(zhuǎn)換。
(2)強(qiáng)制類型轉(zhuǎn)換隱式類型轉(zhuǎn)換只能由較低類型向較高類型轉(zhuǎn)換,但是在實(shí)際工作中,有時(shí)也需要由較高類型向較低類型轉(zhuǎn)換。例如,在計(jì)算數(shù)值時(shí)為了保證其精度,為某些變量取了較高的數(shù)據(jù)類型(如double型),但在輸出時(shí),往往只需要保留兩三位小數(shù)或者只輸出整數(shù)即可,這時(shí)只能進(jìn)行強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換需要人為地在表達(dá)式前面指明所需要轉(zhuǎn)換的類型,系統(tǒng)將按這一要求把某種類型強(qiáng)制性地轉(zhuǎn)換為指定的類型。格式如下:
(<類型名>)<表達(dá)式>【例2-1】類型轉(zhuǎn)換。publicclassExam2_1{
publicstaticvoidmain(String[]args){
bytea;
intb=325;
doublec=346.73;
a=(byte)b;
System.out.println(″int->byte:″+b+″->″+a);
b=(int)c;
System.out.println(″double->int:″+c+″->″+b);
}}程序運(yùn)行結(jié)果如圖2-2所示。程序分析:將整型變量b的數(shù)值通過強(qiáng)制類型轉(zhuǎn)換為字節(jié)型,應(yīng)為325除以256的余數(shù),結(jié)果為69;將雙精度變量c的數(shù)值通過強(qiáng)制類型轉(zhuǎn)換為整型,截去小數(shù)部分,結(jié)果為346。圖2-2例2-1程序運(yùn)行結(jié)果常量是指在程序的整個(gè)運(yùn)行過程中其值始終保持不變的量。在Java語(yǔ)言中,常量有兩種形式:一種是以數(shù)字形式直接給出值的常量;另一種是以關(guān)鍵字final定義的標(biāo)識(shí)符常量。不論哪種形式的常量,一旦聲明,在程序的整個(gè)運(yùn)行過程中其值始終不會(huì)改變。變量是指在程序的運(yùn)行過程中其值可以被改變的量。變量除了分為不同的數(shù)據(jù)類型外,更重要的是每個(gè)變量還具有變量名和變量值兩重含義。變量名是用戶自己定義的標(biāo)識(shí)符。通過指明變量所屬的數(shù)據(jù)類型,將相關(guān)的操作封裝在數(shù)據(jù)類型中。2.1.6常量和變量
1.常量常量又分為直接常量和符號(hào)常量。
(1)直接常量直接常量是指在程序中直接引用的常量,包括數(shù)值型常量和非數(shù)值型常量。其中,數(shù)值型常量稱為常數(shù),包括整型常量和浮點(diǎn)型常量,如10、-10.16等;非數(shù)值型常量有字符常量、字符串常量和布爾常量。如'A',″abc″,true,false等。
(2)符號(hào)常量符號(hào)常量是以標(biāo)識(shí)符形式出現(xiàn)的常量,在Java語(yǔ)言中,只能將類的成員定義為常量,稱為類常量,而不允許在方法中定義常量。聲明符號(hào)常量以提高程序的可讀性,使程序易于修改。符號(hào)常量必須先聲明后使用,具體格式如下:
<修飾符>final<數(shù)據(jù)類型><常量標(biāo)識(shí)符>=<常量值>修飾符:用于表示數(shù)據(jù)屬性的權(quán)限,如public、默認(rèn)值等。
final:定義符號(hào)常量的關(guān)鍵字。數(shù)據(jù)類型:符號(hào)常量的數(shù)據(jù)類型,可以是基本數(shù)據(jù)類型。例如:
publicfinalintMAX=10;
finalfloatPI=3.14f;
Java語(yǔ)言約定常量標(biāo)識(shí)符全部用大寫字母表示。標(biāo)識(shí)符一旦被聲明為常量,就不能再作他用。聲明常量的好處有兩點(diǎn):一是增加可讀性,從常量名可知常量的含義;二是增強(qiáng)可維護(hù)性,只要在常量聲明處修改常量值,即可改變程序中多處使用的常量值。
2.變量
Java中的變量具有4個(gè)基本屬性:變量名、數(shù)據(jù)類型、存儲(chǔ)單元和變量值。變量名是變量的名稱,用合法的標(biāo)識(shí)符表示;數(shù)據(jù)類型可以是基本數(shù)據(jù)類型和引用類型;每個(gè)數(shù)據(jù)都有—個(gè)存儲(chǔ)單元,大小由數(shù)據(jù)類型決定;變量值是指在變量存儲(chǔ)單元中存放的值。
Java語(yǔ)言是強(qiáng)類型語(yǔ)言,必須對(duì)數(shù)據(jù)先聲明后使用。變量也是這樣,必須先聲明后使用。變量在聲明時(shí)可以初始化,也可以在使用時(shí)進(jìn)行賦值或者調(diào)用時(shí)傳參數(shù)。變量聲明的格式如下:
[修飾符]<數(shù)據(jù)類型><變量名>[=初始化表達(dá)式]例如:
publicStringname=″張三″;
privateStringstr1;
intx,y,z=10;
doublea,b,c=5.5;【例2-2】變量的聲明。publicclassExam2_2{
publicstaticvoidmain(String[]args){
byteb=0x1a;
shorts=01777;
inti=54321;
longl=0xffff2222L;
charc='h‘;
floatf=12.345f;
doubled=12.3e+2;
booleanbool=true;
System.out.println(″b=″+b);
System.out.println(″s=″+s);
System.out.println(″i=″+i);
System.out.println(″l=″+l);
System.out.println(″c=″+c);
System.out.println(″f=″+f);
System.out.println(″d=″+d);
System.out.println(″bool=″+bool);
}}程序運(yùn)行結(jié)果如圖2-3所示。圖2-3例2-2程序運(yùn)行結(jié)果
1.運(yùn)算符
Java語(yǔ)言提供了多種運(yùn)算符。按參與運(yùn)算的操作數(shù)的數(shù)目可分為一元運(yùn)算符、二元運(yùn)算符和三元運(yùn)算符。按照運(yùn)算功能可分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符及賦值、條件等其他運(yùn)算符。
(1)算術(shù)運(yùn)算符算術(shù)運(yùn)算符包括+(加)、-(減)、*(乘)、/(除)、++(自增)、--(自減)、%(取余)、(取模)運(yùn)算,使用整型、字符型或浮點(diǎn)型操作數(shù)。其中,+和-表示正和負(fù)運(yùn)算時(shí)屬于一元運(yùn)算符;表示加和減運(yùn)算時(shí)屬于二元運(yùn)算符。其他算術(shù)運(yùn)算符都是二元運(yùn)算符。2.1.7運(yùn)算符與表達(dá)式對(duì)于除法運(yùn)算(/),若操作數(shù)均為整數(shù),結(jié)果也為整數(shù);若有浮點(diǎn)數(shù)參與運(yùn)算,結(jié)果為浮點(diǎn)數(shù)。例如:1/2的結(jié)果為0,1.0/2的結(jié)果為0.5。取余運(yùn)算(%)可用于整型或浮點(diǎn)型操作數(shù),運(yùn)算結(jié)果的符號(hào)與第一個(gè)操作數(shù)的符號(hào)相同。例如:
10%-3;//結(jié)果為1
-10%3;
//結(jié)果為-1
-10.0%-3.0;//結(jié)果為-1.0自增運(yùn)算符(++)和自減運(yùn)算符(--)是一元運(yùn)算符,它們只能作用在變量上,不能作用于常量和表達(dá)式上,若作用于變量的左邊稱為前綴運(yùn)算,如++i、--i;若作用于變量的右邊稱為后綴運(yùn)算,如i++、i--。例如:前綴運(yùn)算程序段:
intx=6;
inty=++x;
//變量x先自增1后為7,然后將數(shù)值7賦值給變量y后綴運(yùn)算程序段:
intx=6;
inty=x++;//變量x先將數(shù)值6賦值給變量y,然后自增1后為7算術(shù)運(yùn)算符的優(yōu)先級(jí)為:++和--最高,然后是*、/、%,最后是+、-,同級(jí)運(yùn)算符按從左到右的順序進(jìn)行運(yùn)算。
(2)關(guān)系運(yùn)算符關(guān)系運(yùn)算符包括<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)和!=(不等于),用于比較兩個(gè)值,返回布爾型的值true或false。關(guān)系運(yùn)算符都是二元運(yùn)算符,常用于流程控制語(yǔ)句的判斷條件。在Java語(yǔ)言中,任何數(shù)據(jù)類型的數(shù)據(jù)(包括基本類型和引用類型)都可以通過==或!=來比較是否相等。對(duì)于基本類型,比較的是其值是否相等;對(duì)于引用類型,比較的是其名稱是否參考至同一對(duì)象,即比較其是否指向同一個(gè)內(nèi)存地址,而不是比較其內(nèi)容。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。其中<(小于)、<=(小于等于)、>(大于)、>=(大于等于)優(yōu)先級(jí)高于==(等于)和!=(不等于)。
(3)邏輯運(yùn)算符邏輯運(yùn)算符包括以下兩種:
①一元運(yùn)算符:!(邏輯非)。②二元運(yùn)算符:&(非簡(jiǎn)潔邏輯與)、|(非簡(jiǎn)潔邏輯或)、&&(簡(jiǎn)潔邏輯與)、‖(簡(jiǎn)潔邏輯或)和^(邏輯異或)。邏輯非運(yùn)算符的功能是:操作數(shù)為true,邏輯非后為false。邏輯與運(yùn)算符的功能是:兩個(gè)操作數(shù)只要有一個(gè)為false,邏輯與后就為false。邏輯或運(yùn)算符的功能是:兩個(gè)操作數(shù)只要有一個(gè)為true,邏輯或后就為true。邏輯異或運(yùn)算符的功能是:兩個(gè)操作數(shù)相同時(shí)邏輯異或結(jié)果為false,兩個(gè)操作數(shù)不同時(shí)邏輯異或結(jié)果為true。邏輯運(yùn)算所有可能的輸入/輸出結(jié)果見表2-5,表中OP1、OP2表示兩個(gè)布爾型操作數(shù)。
(4)賦值運(yùn)算符賦值運(yùn)算符包括簡(jiǎn)單賦值運(yùn)算符和復(fù)合賦值運(yùn)算符兩種。①簡(jiǎn)單賦值運(yùn)算符:=。②復(fù)合賦值運(yùn)算符:+=、-=、*=、/=、%=、&=、|=、^=。賦值運(yùn)算通常是將賦值號(hào)右邊表達(dá)式的值賦值給左邊的變量;復(fù)合賦值運(yùn)算符用賦值號(hào)左邊的變量與右邊的表達(dá)式作為操作數(shù)執(zhí)行相應(yīng)運(yùn)算,并將運(yùn)算結(jié)果發(fā)送給賦值號(hào)左邊的變量。例如:
i+=1;//等同于i=i+1;變量i既是參與+運(yùn)算的操作數(shù)之一,也是存儲(chǔ)運(yùn)算結(jié)果的變量。
(5)條件運(yùn)算符條件運(yùn)算符(?:)是三元運(yùn)算符。例如:
x>y?x:y其計(jì)算過程是:先判斷x是否大于y,若x大于y則表達(dá)式的值為x;否則表達(dá)式的值為y。例如:
inta=5;
a>3?a+5:a-5;//計(jì)算表達(dá)式a>3的值為true,則該表達(dá)式的值為a+5即為10由三元運(yùn)算符組成的表達(dá)式稱為條件表達(dá)式,這是因?yàn)槿\(yùn)算符具有簡(jiǎn)單的條件語(yǔ)句的功能。例如:Inta=5,b;b=a>3?a+5:a-5;等同于if(a>3)
b=a+5;else
b=a-5;
(6)位運(yùn)算符位運(yùn)算符包括&(按位與)、|(按位或)、^(按位異或)、~(按位非)、<<(左移位)、>>
(帶符號(hào)右移位)和>>>(不帶符號(hào)右移位),用于二進(jìn)制位操作,操作數(shù)只能是整型數(shù)據(jù)或字符型數(shù)據(jù)。除~(按位非)是一元運(yùn)算符外,其他都是二元運(yùn)算符。表2-6列出了位運(yùn)算&(按位與)、|(按位或)、^(按位異或)、~(按位非)所有可能的輸入/輸出結(jié)果,其中OP1與OP2表示兩個(gè)參與運(yùn)算的二進(jìn)制位。
<<(左移位):將一個(gè)二進(jìn)制數(shù)的各位左移若干位,高位溢出丟棄,低位補(bǔ)0。
>>(帶符號(hào)右移位):將一個(gè)二進(jìn)制數(shù)的各位右移若干位,低位溢出丟棄,高位補(bǔ)符號(hào)位,正數(shù)補(bǔ)0,負(fù)數(shù)補(bǔ)1。
>>>(不帶符號(hào)右移位):將一個(gè)二進(jìn)制數(shù)的各位右移若干位,低位溢出丟棄,高位補(bǔ)0。
2.表達(dá)式表達(dá)式是語(yǔ)句中最常見的組成元素之一。本質(zhì)上,表達(dá)式描述運(yùn)算規(guī)則并按規(guī)則執(zhí)行運(yùn)算,運(yùn)算得到的結(jié)果稱為表達(dá)式的值,該值的類型即為表達(dá)式的類型。
Java語(yǔ)言的表達(dá)式就是用運(yùn)算符將操作數(shù)連接起來的符合Java語(yǔ)法規(guī)則的式子。操作數(shù)可以是常量、變量或方法調(diào)用。運(yùn)算符的優(yōu)先級(jí)決定了表達(dá)式中多個(gè)運(yùn)算執(zhí)行的先、后順序,優(yōu)先級(jí)高的先運(yùn)算,優(yōu)先級(jí)低的后運(yùn)算,優(yōu)先級(jí)相同的則由運(yùn)算符的結(jié)合性確定其運(yùn)算順序。運(yùn)算符的結(jié)合性決定了同一優(yōu)先級(jí)的多個(gè)運(yùn)算符的運(yùn)算順序,包括左結(jié)合(從左向右)和右結(jié)合(從右向左)兩種。一元運(yùn)算符中的-、!等都是右結(jié)合的,即操作數(shù)在運(yùn)算符的右邊,自增和自減運(yùn)算符根據(jù)其前綴運(yùn)算和后綴運(yùn)算的特點(diǎn)表現(xiàn)出兩種結(jié)合性。除了賦值運(yùn)算符,其他二元運(yùn)算符的結(jié)合形式都是右結(jié)合。例如:加(+)、減(-)的結(jié)合性是從左到右,表達(dá)式8-5+3相當(dāng)于(8-5)+3。邏輯非運(yùn)算符的結(jié)合性是從右到左,表達(dá)式!!x相當(dāng)于!(!x)??梢杂脠A括號(hào)改變表達(dá)式中運(yùn)算符的運(yùn)算順序,圓括號(hào)中的表達(dá)式稱為子表達(dá)式。子表達(dá)式也可以作為操作數(shù),即表達(dá)式可以嵌套,表現(xiàn)為圓括號(hào)的嵌套。編寫程序時(shí)可盡量使用圓括號(hào)來實(shí)現(xiàn)預(yù)期的運(yùn)算順序,以增加程序中表達(dá)式的可讀性。關(guān)于運(yùn)算符的優(yōu)先級(jí)和結(jié)合性詳見表2-7。在算法語(yǔ)言中,數(shù)據(jù)類型描述數(shù)據(jù)的性質(zhì),表達(dá)式描述對(duì)數(shù)據(jù)的運(yùn)算,而語(yǔ)句描述對(duì)數(shù)據(jù)的操作。程序由一系列語(yǔ)句組成,控制語(yǔ)句提供對(duì)程序執(zhí)行中流程的控制,是程序的核心。Java語(yǔ)言提供各種語(yǔ)句來實(shí)現(xiàn)程序的流程控制,具體分類如下:
●表達(dá)式語(yǔ)句和空語(yǔ)句●復(fù)合語(yǔ)句●選擇語(yǔ)句●循環(huán)語(yǔ)句●跳轉(zhuǎn)語(yǔ)句
1.表達(dá)式語(yǔ)句有些表達(dá)式在其后面加上分號(hào)即可構(gòu)成表達(dá)式語(yǔ)句。例如:
x=10;
sum=sum+1;
newJframe();//實(shí)例化對(duì)象
this.setVisible(true);//方法調(diào)用2.2.1表達(dá)式語(yǔ)句和空語(yǔ)句
2.空語(yǔ)句空語(yǔ)句僅包含一個(gè)分號(hào),不執(zhí)行任何操作。用于程序中某個(gè)語(yǔ)法上要求應(yīng)該有一條語(yǔ)句而實(shí)際上不需要處理數(shù)據(jù)的情況。例如:
for(inti=0;i<10;i++);該循環(huán)體只有一個(gè)“;”,表示該循環(huán)體只包含一條空語(yǔ)句,則該循環(huán)體被執(zhí)行10次,但是不做任何處理。2.2.1表達(dá)式語(yǔ)句和空語(yǔ)句復(fù)合語(yǔ)句又稱為塊語(yǔ)句,是由一對(duì)大括號(hào){}括起來的語(yǔ)句序列,中間可以有多個(gè)變量或語(yǔ)句。其語(yǔ)法格式如下:
{
[變量聲明或常量聲明];
語(yǔ)句序列;
}例如:
{
inta=1,b=2,t;
t=a;
a=b;
b=t;
}2.2.2復(fù)合語(yǔ)句1.if語(yǔ)句if語(yǔ)句基本的語(yǔ)法格式如下:if(邏輯表達(dá)式){
語(yǔ)句1;}else{語(yǔ)句2;}2.2.3選擇語(yǔ)句其中,if和else是關(guān)鍵字。if語(yǔ)句根據(jù)邏輯表達(dá)式值來控制程序流程,當(dāng)邏輯表達(dá)式的值為true,執(zhí)行語(yǔ)句1;否則執(zhí)行else中的語(yǔ)句2。邏輯表達(dá)式必須是布爾型。語(yǔ)句1和語(yǔ)句2可以是單獨(dú)語(yǔ)句,也可以是復(fù)合語(yǔ)句。如果是單獨(dú)語(yǔ)句就可以省略大括號(hào){},若是復(fù)合語(yǔ)句則不可以省略{}。else子句是可選項(xiàng),當(dāng)語(yǔ)句2為空語(yǔ)句時(shí),else可省略。if語(yǔ)句構(gòu)成的選擇結(jié)構(gòu)分為單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)和多分支選擇結(jié)構(gòu),對(duì)應(yīng)的執(zhí)行流程如圖2-4所示。(a)單分支選擇結(jié)構(gòu)(b)雙分支選擇結(jié)構(gòu)(c)多分支選擇結(jié)構(gòu)圖2-4if語(yǔ)句執(zhí)行流程圖
【例2-3】將某用戶的用電量分為三個(gè)區(qū)間,針對(duì)不同區(qū)間給出不同的收費(fèi)標(biāo)準(zhǔn),具體規(guī)則見表2-8,請(qǐng)根據(jù)用戶的用電量計(jì)算繳納的電費(fèi)。Importjava.util.Scanner;publicclassExam2_3{publicstaticvoidmain(String[]args){Scannerreader=newScanner(System.in);doublecount=0,price=0;System.out.print(″請(qǐng)輸入電量:″);count=reader.nextDouble();if(count>=1&&count<=90)price=0.6*count;if(count>=91&&count<=150)price=0.6*90+1.1*(count-90);if(count>=151)price=0.6*90+1.1*60+1.7*(count-150);System.out.println(price);}}
【例2-4】if語(yǔ)句嵌套。通過if語(yǔ)句嵌套的使用,分?jǐn)?shù)是100分制,判斷考試等級(jí)標(biāo)準(zhǔn)為:優(yōu)秀(大于等于90分)、良好(大于等于80分且小于90分)、中等(大于等于70分且小于80分)、及格(大于等于60分且小于70分)、不及格(小于60分)。
importjava.util.Scanner;
publicclassExam2_4{
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
System.out.println(″請(qǐng)輸入成績(jī):″);
doublescore=input.nextDouble();//對(duì)象調(diào)用方法獲取數(shù)據(jù)
if(score>=90)
System.out.println(″你的成績(jī)等級(jí)為:優(yōu)秀″);
elseif(score>=80)
System.out.println(″你的成績(jī)等級(jí)為:良好″);
elseif(score>=70)
System.out.println(″你的成績(jī)等級(jí)為:中等″);
elseif(score>=60)
System.out.println(″你的成績(jī)等級(jí)為:及格″);
else
System.out.println(″你的成績(jī)等級(jí)為:不及格″);}}
程序運(yùn)行結(jié)果如圖2-5所示。圖2-5例2-4程序運(yùn)行結(jié)果
程序分析:其中“importjava.util.Scanner;”是程序?qū)隞DK類庫(kù)提供的Scanner類,該類可以獲取從鍵盤輸入的數(shù)據(jù)?!癝cannerinput=newScanner(Systemi.n);”是實(shí)例化一個(gè)對(duì)象input,Systemi.n是參數(shù)?!癲oublescore=input.nextDouble();”是獲取數(shù)據(jù)并賦值給score。
2.switch分支語(yǔ)句
switch語(yǔ)句基本的語(yǔ)法格式如下:
switch(表達(dá)式)
{
case常量表達(dá)式1:語(yǔ)句1;
[break;]
case常量表達(dá)式2:語(yǔ)句2;
[break;]
...
[default:語(yǔ)句n;]
}其中,switch、case、break和default是關(guān)鍵字。switch語(yǔ)句的執(zhí)行過程是:根據(jù)表達(dá)式的值按照從上至下順序依次與各個(gè)常量表達(dá)式的值進(jìn)行比較,當(dāng)表達(dá)式的值與case后常量表達(dá)式的值相等時(shí),執(zhí)行其后的語(yǔ)句序列,直到遇到break或switch語(yǔ)句執(zhí)行完畢。如果沒有和表達(dá)式的值相等的常量時(shí),則執(zhí)行default后面的語(yǔ)句,若沒有default語(yǔ)句,則不執(zhí)行?!纠?-5】switch語(yǔ)句:使用switch語(yǔ)句判斷輸入數(shù)字是星期幾。importjava.util.*;publicclassExam2_5{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.println(″請(qǐng)輸入1~7的整數(shù):″);intday=input.nextInt();//對(duì)象調(diào)用方法獲取數(shù)據(jù)
switch(day){case7:System.out.println(″星期日″);break;case1:System.out.println(″星期一″);break;case2:System.out.println(″星期二″);break;
case3:System.out.println(″星期三″);break;case4:System.out.println(″星期四″);break;case5:System.out.println(″星期五″);break;case6:System.out.println(″星期六″);break;default:System.out.println(″你輸入的日期不在有效范圍內(nèi)!″);}}}程序運(yùn)行結(jié)果如圖2-6所示。圖2-6例2-5程序運(yùn)行結(jié)果
1.while語(yǔ)句
while語(yǔ)句基本的語(yǔ)法格式如下:
while(邏輯表達(dá)式)
{
循環(huán)體語(yǔ)句;
}其中,while是關(guān)鍵字。while語(yǔ)句先判斷后執(zhí)行。當(dāng)邏輯表達(dá)式的值為true時(shí),執(zhí)行循環(huán)體語(yǔ)句;當(dāng)邏輯表達(dá)式的值為false時(shí),循環(huán)結(jié)束。while語(yǔ)句的執(zhí)行流程,如圖2-7所示。2.2.4循環(huán)語(yǔ)句圖2-7while語(yǔ)句的執(zhí)行流程【例2-6】用while語(yǔ)句求1~100的和。publicclassExam2_6{publicstaticvoidmain(String[]args){inti=1;intsum=0;while(i<=100){sum+=i;i++;}System.out.println(″1~100的和是:″+sum);}}
2.do...while語(yǔ)句
do...while語(yǔ)句基本的語(yǔ)法格式如下:
do
{
循環(huán)體語(yǔ)句;
}while(邏輯表達(dá)式);其中,do和while是關(guān)鍵字。先執(zhí)行do中的循環(huán)體語(yǔ)句,再判斷while中的邏輯表達(dá)式的值,若值為true則繼續(xù)循環(huán),否則循環(huán)結(jié)束。do...while語(yǔ)句的執(zhí)行流程如圖2-8所示。圖2-8do...while語(yǔ)句執(zhí)行流程圖【例2-7】用do...while語(yǔ)句求1~100的和。PublicclassExam2_7{publicstaticvoidmain(String[]args){
inti=1;
intsum=0;
do
{
sum+=i;
i++;
}while(i<=100);
System.out.println(″1~100的和是:″+sum);}}
3.for語(yǔ)句
for語(yǔ)句基本的語(yǔ)法格式如下:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{循環(huán)體語(yǔ)句;
}其中,for是關(guān)鍵字。在for語(yǔ)句中,3個(gè)表達(dá)式之間用分號(hào)“;”隔開。表達(dá)式1給出循環(huán)變量初始值;表達(dá)式2給出循環(huán)條件,結(jié)果為布爾型;表達(dá)式3給出循環(huán)變化的規(guī)律,常為自增或自減。
for語(yǔ)句執(zhí)行流程為:首先執(zhí)行表達(dá)式1,為循環(huán)控制變量賦初值。然后判斷表達(dá)式2是否滿足循環(huán)條件,當(dāng)表達(dá)式2的值為true時(shí),執(zhí)行循環(huán)體,再執(zhí)行表達(dá)式3改變循環(huán)變量的值,進(jìn)入下一輪循環(huán);當(dāng)表達(dá)式2的值為false時(shí),循環(huán)結(jié)束,執(zhí)行for語(yǔ)句后面的語(yǔ)句。for語(yǔ)句的執(zhí)行流程如圖2-9所示。圖2-9for語(yǔ)句的執(zhí)行流程【例2-8】用for語(yǔ)句求1~100的和并輸出。publicclassExam2_8{publicstaticvoidmain(String[]args){intsum=0;for(inti=1;i<=100;i++)sum+=i;System.out.println(″1~100的和是:″+sum);}}
Java語(yǔ)言提供了3種無條件跳轉(zhuǎn)語(yǔ)句:return、break和continue。return語(yǔ)句可以從方法中返回值,break和continue語(yǔ)句用于控制流程轉(zhuǎn)移。
1.return語(yǔ)句
return語(yǔ)句能終止當(dāng)前成員方法的執(zhí)行,返回調(diào)用該方法的位置,并從該語(yǔ)句的下一條語(yǔ)句繼續(xù)執(zhí)行程序。如果該方法的返回類型不是void,則需要提供相應(yīng)類型的返回值。return語(yǔ)句有以下使用格式:格式1:
return;該格式用在返回類型為void的方法中,且return可以省略。格式2:
return返回值;該格式返回值可以是基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,但必須和方法的類型一致,否則編譯無法通過。2.2.5跳轉(zhuǎn)語(yǔ)句
2.break語(yǔ)句
break語(yǔ)句主要有3種作用:一是終止switch語(yǔ)句的執(zhí)行,跳出switch語(yǔ)句,執(zhí)行switch語(yǔ)句后面的語(yǔ)句;二是終止循環(huán)體語(yǔ)句,跳出循環(huán)結(jié)構(gòu),即結(jié)束循環(huán);三是與標(biāo)記語(yǔ)句配合使用從內(nèi)層循環(huán)或內(nèi)層程序退出。
【例2-9】break語(yǔ)句的使用:使用break語(yǔ)句輸出break以前的數(shù)字,并輸出中斷循環(huán)的數(shù)字。PublicclassExam2_9{publicstaticvoidmain(String[]args){intcount;for(count=1;count<=10;count++){if(count==5)break;System.out.println(count);}System.out.println(″循環(huán)中斷的數(shù)是:″+count);}}程序運(yùn)行結(jié)果如圖2-10所示。圖2-10例2-9程序運(yùn)行結(jié)果
3.continue語(yǔ)句與break語(yǔ)句不同,continue語(yǔ)句并不終止循環(huán)體,而是在循環(huán)體中遇到continue語(yǔ)句時(shí),本次循環(huán)結(jié)束,繼續(xù)下一次循環(huán)條件判斷,如果條件滿足則繼續(xù)執(zhí)行,所以continue語(yǔ)句只是跳出本次循環(huán)體。
【例2-10】continue語(yǔ)句的使用:在輸出數(shù)字的過程中使用continue語(yǔ)句跳過指定的數(shù)字。
publicclassExam2_10{
publicstaticvoidmain(String[]args){
intcount;
for(count=1;count<=10;count++){
if(count==5)continue;
System.out.println(count);
}
System.out.println(″循環(huán)中斷的數(shù)是:″+count);
}
}程序運(yùn)行結(jié)果如圖2-11所示。圖2-11例2-9程序運(yùn)行結(jié)果基本數(shù)據(jù)類型的變量只能存儲(chǔ)一個(gè)不可分解的簡(jiǎn)單數(shù)據(jù),如一個(gè)整數(shù)或一個(gè)字符等,而在實(shí)際的應(yīng)用程序中,有時(shí)需要處理大量數(shù)據(jù)。例如,將10000個(gè)整數(shù)排序,首先遇到的問題是如何存儲(chǔ)這10000個(gè)整數(shù),如果用基本數(shù)據(jù)類型來存儲(chǔ),則必須聲明10000個(gè)整數(shù)類型變量,顯然這種存儲(chǔ)方式是不可取的。因此,僅有基本數(shù)據(jù)類型是無法滿足實(shí)際應(yīng)用的需要,必須使用引用數(shù)據(jù)類型。對(duì)于上述需求,采用數(shù)組類型,問題將迎刃而解。在程序設(shè)計(jì)中,為了處理方便,把具有相同類型的若干變量按有序的形式組織起來,這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。一個(gè)數(shù)組包含若干個(gè)同名變量,每個(gè)變量稱為一個(gè)數(shù)組元素,數(shù)組的元素個(gè)數(shù)稱為數(shù)組的長(zhǎng)度。數(shù)組元素在數(shù)組中的位置稱為數(shù)組的下標(biāo),通過數(shù)組名加下標(biāo)的形式可以引用數(shù)組中的指定元素。數(shù)組下標(biāo)的個(gè)數(shù)稱為數(shù)組的維數(shù),有一個(gè)下標(biāo)的是一維數(shù)組,有兩個(gè)下標(biāo)的就是二維數(shù)組。
1.一維數(shù)組聲明數(shù)組和基本數(shù)據(jù)類型一樣,必須先聲明后使用。聲明一維數(shù)組的語(yǔ)法格式有以下兩種格式:格式一:數(shù)據(jù)類型[]數(shù)組名;格式二:數(shù)據(jù)類型數(shù)組名[];其中:數(shù)據(jù)類型:數(shù)組中數(shù)組元素的數(shù)據(jù)類型,可以是基本數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型。數(shù)組名:是用戶聲明的合法標(biāo)識(shí)符。
[]:用于表示一維數(shù)組,不能省略。2.3.1一維數(shù)組例如:
inta[];int[]b;
String[]grades;
publicstaticvoidmain(Stringargs[]){}//數(shù)組作為參數(shù)聲明多個(gè)一維數(shù)組可使用如下方式:
int[]c,d,e;或
intc[],d[],e[];
2.為數(shù)組分配空間使用new運(yùn)算符申請(qǐng)數(shù)組所需內(nèi)存單元,語(yǔ)法格式如下:數(shù)組名=new數(shù)據(jù)類型[長(zhǎng)度];其中:數(shù)組名:合法的標(biāo)識(shí)符。
new:運(yùn)算符關(guān)鍵字,用于分配空間。數(shù)據(jù)類型:數(shù)組元素的數(shù)據(jù)類型,該數(shù)據(jù)類型必須與數(shù)組聲明時(shí)的數(shù)據(jù)類型一致。長(zhǎng)度:數(shù)組申請(qǐng)的存儲(chǔ)單元個(gè)數(shù),必須是大于0的正整數(shù)。例如:
int
a[];//數(shù)組的聲明
a=newint[6];//為數(shù)組分配空間數(shù)組a獲得6個(gè)存儲(chǔ)單元的內(nèi)存空間,存儲(chǔ)單元的大小由數(shù)組元素的數(shù)據(jù)類型決定。上述語(yǔ)句等同于:
inta[]=newint[6];
3.獲取數(shù)組長(zhǎng)度
Java語(yǔ)言自動(dòng)為每個(gè)數(shù)組提供length屬性用于保存數(shù)組存儲(chǔ)單元的個(gè)數(shù)??梢允褂命c(diǎn)運(yùn)算符獲取數(shù)組長(zhǎng)度。格式如下:數(shù)組名l.ength建議使用length屬性使數(shù)組下標(biāo)在0~數(shù)組名.length-1變化,這樣既避免產(chǎn)生下標(biāo)越界的運(yùn)行錯(cuò)誤,又能使程序段不受數(shù)組長(zhǎng)度變化的影響,從而使程序更加穩(wěn)定和易于維護(hù)。
4.數(shù)組元素的引用和運(yùn)算數(shù)組中的元素可以是基本數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型。數(shù)組元素的引用格式如下:數(shù)組名[下標(biāo)];例如:
inta[6];//表示數(shù)組a有6個(gè)元素
a[0]=100;//a[0]表示數(shù)組的第1個(gè)元素,賦值為100
a[1]=200;//a[1]表示數(shù)組的第2個(gè)元素,賦值為200
a[5]=100;//a[5]表示數(shù)組的第6個(gè)元素,賦值為100數(shù)組名的命名規(guī)則與其他變量名是一樣的。索引必須是非負(fù)整數(shù),還可以用表達(dá)式示。例如:
intx=2,y=3;那么a[x+y]等同于a[5]。
5.數(shù)組聲明時(shí)賦初值數(shù)組在聲明時(shí)可以賦初值。例如:
int
a[]={1,2,3,4,5,6};//聲明整型數(shù)組a有6個(gè)元素,初始值為1~6
6.數(shù)組元素的初始化使用new運(yùn)算符動(dòng)態(tài)分配存儲(chǔ)單元后,將對(duì)數(shù)組元素進(jìn)行初始化。數(shù)組元素的初始化值見表2-9。
7.數(shù)組變量的引用賦值當(dāng)聲明一個(gè)數(shù)組變量a而未申請(qǐng)存儲(chǔ)空間時(shí),數(shù)組變量a是未初始化的,沒有地址及特性值。只有為a申請(qǐng)存儲(chǔ)空間,才能以下標(biāo)表示數(shù)組元素,否則將產(chǎn)生編譯錯(cuò)誤。兩個(gè)數(shù)組變量之間賦值是引用賦值,傳遞的是地址等特性,沒有申請(qǐng)新的存儲(chǔ)空間。例如:
inta[]={1,2,3,4,5};
intb[];
b=a;
b[0]=100;數(shù)組b獲得數(shù)組a的已有存儲(chǔ)空間的地址,此時(shí)兩個(gè)數(shù)組變量擁有同一個(gè)數(shù)組空間,兩個(gè)數(shù)組變量引用同一個(gè)數(shù)組。以上語(yǔ)句執(zhí)行后的內(nèi)存單元存儲(chǔ)的數(shù)值,如圖2-12所示。圖2-12數(shù)組變量賦初值【例2-11】一維數(shù)組的定義與賦值。importjava.util.Arrays;PublicclassExam2_11{publicstaticvoidmain(String[]args){int[]a={1,2,3,4,500,600,700,800};int[]b,c,d;b=newint[8];c=newint[8];d=newint[8];System.out.println(Arrays.toString(a));System.arraycopy(a,0,b,0,a.length);System.out.println(Arrays.toString(b));System.arraycopy(a,0,c,0,4);//調(diào)用arraycopy方法復(fù)制數(shù)組a前4個(gè)元素到數(shù)組c中的前4個(gè)元素
System.out.println(Arrays.toString(c));//Arrays調(diào)用toString方法返回?cái)?shù)組c的元素值
System.arraycopy(a,4,d,0,4);//調(diào)用arraycopy方法復(fù)制數(shù)組a的后4個(gè)元素到數(shù)組d中的前4個(gè)元素
System.out.println(Arrays.toString(d));c[c.length-1]=-100;//將-100賦給數(shù)組c的最后一個(gè)元素
d[d.length-1]=-200;System.out.println(Arrays.toString(c));System.out.println(Arrays.toString(d));}}程序運(yùn)行結(jié)果如圖2-13所示。圖2-13例2-11程序運(yùn)行結(jié)果常用的多維數(shù)組是二維數(shù)組。下面我們將詳細(xì)介紹二維數(shù)組。1.二維數(shù)組聲明二維數(shù)組的聲明方法和一維數(shù)組的類似,例如:inta[][];//聲明二維數(shù)組aa=newint[5][6];//為數(shù)組a申請(qǐng)5行6列共30個(gè)存儲(chǔ)單元上述聲明也可寫為:inta[][]=newint[5][6];二維數(shù)組在聲明時(shí)也可以賦初值。例如:inta[][]={{1,2,3},{4,5,6},{7,8,9}};2.3.2多維數(shù)組2.獲取數(shù)組長(zhǎng)度例如:al.ength;//獲取二維數(shù)組的長(zhǎng)度,即二維數(shù)組的行數(shù)a[0]l.ength;//獲取一維數(shù)組的長(zhǎng)度,即二維數(shù)組的列數(shù)3.數(shù)組元素的表示和運(yùn)算二維數(shù)組由行(row)和列(column)組成,必須用兩個(gè)索引指定一個(gè)數(shù)組元素。例如:inta[][]=newint[5][6];//a[0][0]表示數(shù)組a中第一行第一列元素【例2-12】二維數(shù)組的使用:計(jì)算下面所示矩陣的主對(duì)角線元素(1,5,9)的和。1
2
34
5
67
8
9publicclassExam2_12{
publicstaticvoidmain(String[]args){
inta[][]={{1,2,3},{4,5,6},{7,8,9}};
inti
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年商業(yè)地產(chǎn)代理銷售與租賃復(fù)合合同
- 2024年廣告設(shè)計(jì)制作與發(fā)布合同
- 2023年溫州市泰順縣農(nóng)村發(fā)展有限公司招聘考試真題
- 2023年四川雅茶集團(tuán)茶業(yè)有限公司招聘人員考試真題
- 04版菁專利許可使用合同詳述
- 2023年泉州市直部分公辦學(xué)校招聘編制內(nèi)新任教師考試真題
- 2023年內(nèi)蒙古氣象部門招聘(氣象類)考試真題
- 2024年定制:建筑用夾芯板供應(yīng)合同
- 2023年廣州市海珠區(qū)勞動(dòng)人事爭(zhēng)議仲裁院招聘雇員考試真題
- 2023年廈門市集美區(qū)滸井實(shí)驗(yàn)幼兒園教職工招聘考試真題
- 木門窗施工方案
- 四川省成都市九縣區(qū)2024-2025學(xué)年高一上學(xué)期期中考試數(shù)學(xué)試題(含答案)
- 2024秋國(guó)開《四史通講》期末大作業(yè)試題B答案(第1套)
- 2024年8月CCAA國(guó)家注冊(cè)審核員《管理體系認(rèn)證基礎(chǔ)》考試題目含解析
- 2024新版(北京版)三年級(jí)英語(yǔ)上冊(cè)單詞帶音標(biāo)
- 2023醫(yī)療質(zhì)量安全核心制度要點(diǎn)釋義(第二版)對(duì)比版
- 《我家漂亮的尺子》課件-定稿
- 思想道德與法治第二章
- 內(nèi)分泌科出科考試試題(附答案)
- 對(duì)護(hù)理不良事件上報(bào)系統(tǒng)培訓(xùn)PPT-醫(yī)療教育宣傳PPT
- 中國(guó)粒缺伴發(fā)熱抗菌藥物指南(2016版)解讀ppt課件
評(píng)論
0/150
提交評(píng)論