版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1頁(yè)第1章 Java入門 本章概述 本章的學(xué)習(xí)目標(biāo)主要內(nèi)容第2頁(yè)本章概述Java是一種跨平臺(tái)的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,自問(wèn)世以來(lái),受到越來(lái)越多開(kāi)發(fā)者的喜愛(ài)。它不僅吸收了C+語(yǔ)言的各種優(yōu)點(diǎn),而且摒棄了C+里難以理解的多繼承、指針等概念,因此Java語(yǔ)言具有功能強(qiáng)大和簡(jiǎn)單易用等特征。本章將從Java的起源講起,詳細(xì)介紹Java的發(fā)展歷程、Java的特點(diǎn)、Java開(kāi)發(fā)工具以及Java程序開(kāi)發(fā)的基本步驟,并創(chuàng)建一個(gè)簡(jiǎn)單的HelloWorld程序。第3頁(yè)本章的學(xué)習(xí)目標(biāo)了解Java語(yǔ)言的歷史和特點(diǎn)理解Java與其他編程語(yǔ)言的關(guān)系掌握J(rèn)ava程序的基本構(gòu)成了解流行的Java程序集成開(kāi)發(fā)環(huán)境掌握J(rèn)ava Ap
2、plication的一般開(kāi)發(fā)步驟掌握J(rèn)DK的安裝與配置第4頁(yè)主要內(nèi)容1.1 概述 1.2 第一個(gè)Java程序1.3 Java開(kāi)發(fā)工具1.4 Java程序開(kāi)發(fā)步驟1.5 本章小結(jié)1.6 思考和練習(xí)第5頁(yè)1.1 概述 Java是由美國(guó)Sun公司(現(xiàn)已被Oracle公司收購(gòu))開(kāi)發(fā)的支持面向?qū)ο蟪绦蛟O(shè)計(jì)的計(jì)算機(jī)語(yǔ)言。它最大的優(yōu)勢(shì)就是借助于虛擬機(jī)機(jī)制實(shí)現(xiàn)的跨平臺(tái)特性,實(shí)現(xiàn)所謂的“一次編譯,隨處運(yùn)行”,使移植工作變得不再?gòu)?fù)雜。 Microsoft、IBM、DEC、Adobe、SiliconGraphics、HP、Toshiba、Netscape和Apple等大公司均已購(gòu)買Java的許可證,Microsof
3、t還在其IE瀏覽器中增加了對(duì)Java的支持。另外,眾多的軟件開(kāi)發(fā)商也開(kāi)發(fā)了許多支持Java的軟件產(chǎn)品。第6頁(yè)概述Java ME、Java SE、Java EE是Java針對(duì)不同的應(yīng)用而提供的不同服務(wù),即提供不同類型的類庫(kù)。初學(xué)者一般可從Java SE入手學(xué)習(xí)Java語(yǔ)言。Java SE是一個(gè)優(yōu)秀的開(kāi)發(fā)環(huán)境,開(kāi)發(fā)者可以基于這一環(huán)境創(chuàng)建功能豐富的交互式應(yīng)用,并且可以把這些應(yīng)用配置到其他平臺(tái)上。第7頁(yè)1.1.1 Java的起源與發(fā)展早在1990年12月,SUN 公司就由Patrick Naughton、Mike Sheridan和James Gosling成立了一個(gè)叫做Green Team的小組。1
4、992年9月3日,Green Team發(fā)表了一款名為Star Seven(*7)的機(jī)器,它有點(diǎn)像現(xiàn)在人們熟悉的PDA(個(gè)人數(shù)字助理),不過(guò)它有著比PDA更強(qiáng)大的功能Java語(yǔ)言的前身Oak就是在那個(gè)時(shí)候誕生的,其主要的目的當(dāng)然是用來(lái)撰寫在 Star 7上的應(yīng)用程序。第8頁(yè)JDK 1.x1996年1月,Sun公司發(fā)布了Java的第一個(gè)開(kāi)發(fā)工具包(JDK 1.0),這是Java發(fā)展歷程中的重要里程碑,標(biāo)志著Java成為一種獨(dú)立的開(kāi)發(fā)工具。9月,約8.3萬(wàn)個(gè)網(wǎng)頁(yè)應(yīng)用了Java技術(shù)來(lái)制作。10月,Sun公司發(fā)布了Java平臺(tái)的第一個(gè)即時(shí)(JIT)編譯器。在JDK 1.0發(fā)布不久,Java的設(shè)計(jì)人員就著
5、手創(chuàng)建下一個(gè)版本。1997年2月,JDK 1.1面世,新版本添加了許多新的庫(kù)元素,改進(jìn)了事件處理方式,并且重新配置了JDK 1.0中庫(kù)的許多特性,也去掉了最初版本中的一些特性。第9頁(yè)Java 21998年12月8日,第二代Java平臺(tái)的企業(yè)版J2EE發(fā)布。1999年6月,Sun公司發(fā)布了第二代Java平臺(tái)(簡(jiǎn)稱為Java 2)的3個(gè)版本:J2ME(Java 2 Micro Edition,Java2平臺(tái)的微型版),應(yīng)用于移動(dòng)、無(wú)線及有限資源的環(huán)境;J2SE(Java 2 Standard Edition,Java 2平臺(tái)的標(biāo)準(zhǔn)版),應(yīng)用于桌面環(huán)境;J2EE(Java 2 Enterprise
6、Edition,Java 2平臺(tái)的企業(yè)版),應(yīng)用于基于Java的應(yīng)用服務(wù)器。Java 2平臺(tái)的發(fā)布,是Java發(fā)展過(guò)程中最重要的一個(gè)里程碑,標(biāo)志著Java的應(yīng)用開(kāi)始普及。第10頁(yè)J2SE 5J2SE 1.4之后的下一個(gè)發(fā)布版本是J2SE 5(內(nèi)部版本號(hào)1.5.0),該版本也是革命性的。于2004年9月30日發(fā)布,成為Java語(yǔ)言發(fā)展史上的又一里程碑。它與先前的大多數(shù)Java升級(jí)不同,因?yàn)槟切┥?jí)提供了重要、但是有規(guī)律的改進(jìn),而J2SE 5從根本上擴(kuò)展了Java語(yǔ)言的應(yīng)用領(lǐng)域、功能和范圍。第11頁(yè)Java SE62005年6月,在Java One大會(huì)上,Sun公司發(fā)布了Java SE 6,內(nèi)部的
7、開(kāi)發(fā)版本號(hào)是1.6。此時(shí),Java的各種版本已經(jīng)更名,已取消其中的數(shù)字2,如J2EE更名為Java EE,J2SE更名為Java SE,J2ME更名為Java ME。Java開(kāi)發(fā)工具包叫做JDK 6。 Java SE 6建立在J2SE 5的基礎(chǔ)之上,進(jìn)行了一些增量式的改進(jìn)。Java SE 6沒(méi)有為Java語(yǔ)言添加真正重要的新特性,但它確實(shí)增強(qiáng)了API庫(kù),添加了幾個(gè)新的包,并且對(duì)運(yùn)行時(shí)進(jìn)行了改進(jìn)。隨著幾次升級(jí),在漫長(zhǎng)的生命周期中,Java SE 6還進(jìn)行了幾次更新??傊?,Java SE 6進(jìn)一步鞏固了J2SE 5的發(fā)展成果。第12頁(yè)Java SE72009年,Oracle公司宣布收購(gòu)Sun公司。
8、2010年,Java編程語(yǔ)言的共同創(chuàng)始人之一詹姆斯高斯林從Oracle公司辭職。2011年,Oracle公司舉行了全球性的活動(dòng),以慶祝Java 7的推出,隨后Java SE 7正式發(fā)布,內(nèi)部版本號(hào)為1.7。Java SE 7是自從Sun Microsystems被Oracle公司收購(gòu)之后第一個(gè)重要的發(fā)布版本。Java SE 7包含許多新特性第13頁(yè)Java SE82014年3月,Oracle發(fā)布Java SE 8。這也是最新的Java發(fā)布版本,對(duì)應(yīng)的Java開(kāi)發(fā)工具包稱為JDK 8,內(nèi)部版本號(hào)為1.8。JDK 8是Java語(yǔ)言的重要升級(jí),包含了一個(gè)影響深遠(yuǎn)的新語(yǔ)言特性:lambda表達(dá)式。la
9、mbda表達(dá)式為Java添加了函數(shù)式編程特性。第14頁(yè)Java未來(lái)2017年9月發(fā)布的JDK9和2018年3月發(fā)布的JDK10都不是長(zhǎng)期服務(wù)版本,即將發(fā)布的Java SE 11 LTS 是 Java SE 平臺(tái)的首個(gè)長(zhǎng)期支持特性版本。Java 11將會(huì)獲得Oracle提供的長(zhǎng)期支持服務(wù),直至2026年9月。目前企業(yè)中應(yīng)用較多的是Java 5Java 8,本書的內(nèi)容將使用較新的版本Java SE 8,并體現(xiàn)Java SE 8的新特性。第15頁(yè)1.1.2 Java的特點(diǎn)Java之所以流行,和它的優(yōu)秀特性是分不開(kāi)的。促使Java誕生的基本動(dòng)力是可移植性和安全性,但是在Java語(yǔ)言最終成型的過(guò)程中,其
10、他因素也扮演了重要角色。第16頁(yè)簡(jiǎn)單性Java的設(shè)計(jì)目標(biāo)之一是讓專業(yè)程序員能夠高效地學(xué)習(xí)和使用。Java繼承了C/C+的語(yǔ)法以及許多面向?qū)ο筇匦?,設(shè)計(jì)者們把C+語(yǔ)言中一些復(fù)雜容易出錯(cuò)的特征去掉了,例如,Java不支持go to語(yǔ)句,代之以提供break和continue語(yǔ)句以及異常處理:Java還剔除了C+的操作符重載和多繼承特征;另外,因?yàn)镴ava沒(méi)有結(jié)構(gòu),數(shù)組和字符串都是對(duì)象,所以不需要指針;Java能夠自動(dòng)處理對(duì)象的引用和間接引用,實(shí)現(xiàn)自動(dòng)的無(wú)用單元收集,使用戶不必為存儲(chǔ)管理問(wèn)題煩惱,能更多的時(shí)間和精力花在研發(fā)上。對(duì)于一位有經(jīng)驗(yàn)的C+程序員,只需要非常少的努力就可以使用Java進(jìn)行程序開(kāi)
11、發(fā)。對(duì)于初學(xué)者,只要理解了面向?qū)ο缶幊痰幕靖拍?,學(xué)習(xí)Java也會(huì)變得非常容易。第17頁(yè)平臺(tái)獨(dú)立性平臺(tái)獨(dú)立性是Java語(yǔ)言的最大優(yōu)勢(shì),它意味著Java可以在支持Java的任何平臺(tái)上“獨(dú)立于所有其他軟硬件”而運(yùn)行。例如,不管操作系統(tǒng)是Windows、Linux、Unix還是Macintosh,也不管機(jī)器是大型機(jī),小型機(jī)還是微機(jī),甚至是PDA或者手機(jī)、智能家電,Java程序都能運(yùn)行,當(dāng)然在這些平臺(tái)上都應(yīng)裝有相應(yīng)版本的JVM(Java虛擬機(jī)),即平臺(tái)必須支持Java。第18頁(yè)安全性Java語(yǔ)言主要用于網(wǎng)絡(luò)應(yīng)用程序的開(kāi)發(fā),如果沒(méi)有安全保證,那么用戶運(yùn)行從網(wǎng)絡(luò)上下載的Java語(yǔ)言應(yīng)用程序是十分危險(xiǎn)的。J
12、ava語(yǔ)言通過(guò)一系列的安全措施,在很大程度上避免了病毒程序的產(chǎn)生和網(wǎng)絡(luò)程序?qū)Ρ镜叵到y(tǒng)的破壞,具體體現(xiàn)如下。(1) 去除指針操作。指針是C/C+中的一個(gè)高級(jí)話題,如果熟練掌握指針可以給程序的開(kāi)發(fā)帶來(lái)很大的方便,但是,如果使用不當(dāng),就有可能帶來(lái)系統(tǒng)資源泄漏。Java語(yǔ)言放棄了指針操作,簡(jiǎn)化了編程,更是避免了對(duì)內(nèi)存的非法訪問(wèn)。(2) Java是一種強(qiáng)類型的程序設(shè)計(jì)語(yǔ)言,要求顯式的聲明,保證編譯器可以提前發(fā)現(xiàn)程序錯(cuò)誤,提高程序的可靠性。(3) 垃圾自動(dòng)回收機(jī)制,讓程序員從繁瑣的內(nèi)存管理工作中解脫出來(lái),專注于程序開(kāi)發(fā)。避免出現(xiàn)“內(nèi)存泄露”現(xiàn)象。(4) Java語(yǔ)言提供了異常處理機(jī)制。(5) Java程序
13、在運(yùn)行時(shí),解釋器會(huì)對(duì)其進(jìn)行數(shù)組和字符串等的越界檢查,確保程序的安全。第19頁(yè)多線程多線程的目的就是降低總程序的執(zhí)行粒度,讓子程序們“同時(shí)”并發(fā)執(zhí)行,這里的“同時(shí)”加引號(hào)是為了強(qiáng)調(diào)只是CPU執(zhí)行各個(gè)子程序速度很快,從宏觀上看,像是同時(shí)在執(zhí)行。如果要實(shí)現(xiàn)真正的同時(shí),就要借助于多處理器,如現(xiàn)在已經(jīng)流行起來(lái)的雙核CPU。另外,隨著程序規(guī)模的擴(kuò)大以及對(duì)效率的重視,在線程之后又出現(xiàn)了纖程技術(shù)。纖程對(duì)線程又做了進(jìn)一步細(xì)分,成為CPU調(diào)度的基本單位,使得人們?cè)O(shè)計(jì)并發(fā)程序時(shí)更加靈活。Java是支持多線程程序開(kāi)發(fā)的,它提供了Thread類,由它負(fù)責(zé)線程的啟動(dòng)運(yùn)行、終止線程,并可測(cè)試線程狀態(tài)。第20頁(yè)分布式分布式包
14、括數(shù)據(jù)分布和操作分布。數(shù)據(jù)分布是指數(shù)據(jù)可以分散在網(wǎng)絡(luò)的不同主機(jī)上,操作分布是指把一個(gè)計(jì)算分散在不同主機(jī)上進(jìn)行。Java是針對(duì)Internet的分布式環(huán)境而設(shè)計(jì)的,因?yàn)樗芴幚鞹CP/IP協(xié)議。實(shí)際上,使用URL訪問(wèn)資源與訪問(wèn)文件沒(méi)有多大區(qū)別。Java既支持各種層次的網(wǎng)絡(luò)連接,又以Socket類支持可靠的流(stream)網(wǎng)絡(luò)連接,所以用戶可以產(chǎn)生分布式的客戶機(jī)和服務(wù)器。Java還支持遠(yuǎn)程方法調(diào)用(Remote Method Invocation,RMI)。允許程序通過(guò)網(wǎng)絡(luò)調(diào)用方法。第21頁(yè)面向?qū)ο箅S著軟件業(yè)的發(fā)展,面向?qū)ο蟮某绦蛟O(shè)計(jì)方法已經(jīng)流行起來(lái),出現(xiàn)了很多面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,如Java
15、、C+、SmallTalk等?,F(xiàn)在用面向?qū)ο蟮木幊陶Z(yǔ)言進(jìn)行軟件開(kāi)發(fā)已很普遍。簡(jiǎn)單說(shuō),面向?qū)ο笾饕峭ㄟ^(guò)引入類,使得原本的面向過(guò)程程序設(shè)計(jì)有了質(zhì)的飛躍。類中不僅包含數(shù)據(jù)部分,而且還包含操作方法。這個(gè)囊括了數(shù)據(jù)和算法的類成為面向?qū)ο蟪绦蛟O(shè)計(jì)中最關(guān)鍵的要素??梢哉f(shuō),所有功能的實(shí)現(xiàn)都是圍繞類而展開(kāi)的。同樣,面向?qū)ο蠹夹g(shù)的特征也是由類體現(xiàn)出來(lái)的。第22頁(yè)1.1.3 Java與其他編程語(yǔ)言間的關(guān)系程序開(kāi)發(fā)語(yǔ)言可分為4代:機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言和面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。機(jī)器語(yǔ)言是機(jī)器最終執(zhí)行時(shí)所能識(shí)別的二進(jìn)制序列,任何其他語(yǔ)言編寫的程序最后都要轉(zhuǎn)換為相應(yīng)的機(jī)器語(yǔ)言才能運(yùn)行。在電子計(jì)算機(jī)剛剛誕生的一小段時(shí)
16、間內(nèi),人們只能用0、1進(jìn)行編程,后來(lái)為了提高編程效率,引入了英文助記符,才出現(xiàn)了匯編語(yǔ)言。第23頁(yè)1.1.3 Java與其他編程語(yǔ)言間的關(guān)系匯編語(yǔ)言的出現(xiàn),大大提升了代碼的編寫速度,同時(shí)也使代碼可讀性和可維護(hù)性大大提高。匯編對(duì)于程序員的自身要求還是很高的,為了普及計(jì)算機(jī)使之作為社會(huì)各行各業(yè)的一種工具,需要開(kāi)發(fā)語(yǔ)法簡(jiǎn)單,編寫容易的高級(jí)編程語(yǔ)言,如Basic、Pascal、Fortran、C等。隨著軟件業(yè)的不斷發(fā)展,軟件規(guī)模變得越來(lái)越大,迫切需要更高效的編程語(yǔ)言。應(yīng)此需求,Java、C+、Visual Basic和Delphi等面向?qū)ο笳Z(yǔ)言應(yīng)運(yùn)而生。第24頁(yè)主要內(nèi)容1.1 概述 1.2 第一個(gè)Ja
17、va程序1.3 Java開(kāi)發(fā)工具1.4 Java程序開(kāi)發(fā)步驟1.5 本章小結(jié)1.6 思考和練習(xí)第25頁(yè)1.2 第一個(gè)Java程序用Java編寫的程序有兩種類型:Java應(yīng)用程序(Java Application)和Java小應(yīng)用程序(Java Applet)。雖然二者的編程語(yǔ)法是完全一樣的,但后者需要客戶端瀏覽器的支持才能運(yùn)行,并且在運(yùn)行前必須先將其嵌入HTML文件的和標(biāo)簽對(duì)(HTML 5中不支持標(biāo)簽,可使用標(biāo)簽替代)中。當(dāng)用戶瀏覽該HTML頁(yè)面時(shí),首先從服務(wù)器端下載Java Applet程序,進(jìn)而被客戶端已安裝的Java虛擬機(jī)解釋和運(yùn)行。另外,Java Applet沒(méi)有main()方法,而A
18、pplication一定要有main()方法。第26頁(yè)1.2.1 Java應(yīng)用程序Java源程序是以文本格式存放的,文件擴(kuò)展名必須為.java。第27頁(yè)1.2.1 Java應(yīng)用程序類名后面的大括號(hào)標(biāo)識(shí)著類定義的開(kāi)始和結(jié)束,而main方法后面的大括號(hào)則標(biāo)識(shí)著方法體的開(kāi)始和結(jié)束。Java程序中的大括號(hào)都是成對(duì)出現(xiàn)的,因而在寫左大括號(hào)時(shí),最好也把右大括號(hào)寫上。通常,習(xí)慣將類名的首字母大寫,而變量則以小寫字母打頭,變量名由多個(gè)單詞組成時(shí),第一個(gè)單詞后邊的每個(gè)單詞首字母大寫。程序中應(yīng)適當(dāng)使用空格符和空白行來(lái)對(duì)程序語(yǔ)句元素進(jìn)行間隔,增加程序的可讀性。在編輯程序時(shí),最好一條語(yǔ)句占一行。另外,雖然Java允許
19、一條長(zhǎng)的語(yǔ)句分開(kāi)寫在幾行中,但前提是不能從標(biāo)識(shí)符或字符串的中間進(jìn)行分割。另外,文件名與public類名在拼寫和大小寫上必須保持一致。一個(gè)Java Application程序必須定義有且僅有一個(gè)main方法,它是程序的執(zhí)行入口。除了main方法外,程序還可以有其他方法,后面章節(jié)會(huì)介紹。第28頁(yè)1.2.2 Java AppletJava Applet就是用Java語(yǔ)言編寫的這樣的一些小應(yīng)用程序,它們可以直接嵌入到網(wǎng)頁(yè)中,并能夠產(chǎn)生特殊的效果。包含Applet的網(wǎng)頁(yè)被稱為Java-powered頁(yè)。當(dāng)用戶訪問(wèn)這樣的網(wǎng)頁(yè)時(shí), Applet被下載到用戶的計(jì)算機(jī)上執(zhí)行,但前提是用戶使用的是支持Java的網(wǎng)
20、絡(luò)瀏覽器。隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,出現(xiàn)了很多網(wǎng)頁(yè)特效和動(dòng)畫技術(shù),而且這些技術(shù)不需要客戶端的瀏覽器支持Java,因此,使用Applet的網(wǎng)頁(yè)已經(jīng)不多了,本書不對(duì)Applet做過(guò)多的介紹,這里給出一個(gè)最簡(jiǎn)單的示例。第29頁(yè)1.2.2 Java Appletimport java.applet.Applet;import java.awt.*;public class HelloWorldApplet extends Appletpublic void paint(Graphics g )g.drawString(Hello World!,10,50); /end class HelloWorld
21、AppletApplet 類沒(méi)有定義main()方法,本例中包含的一個(gè)方法是paint()方法,在paint()方法中,調(diào)用g的drawString()方法,在坐標(biāo)(10,50)處輸出字符串“Hello World!”,其中的坐標(biāo)是用像素點(diǎn)表示的,且以顯示窗口的左上角作為坐標(biāo)系的原點(diǎn)(0,0)。第30頁(yè)主要內(nèi)容1.1 概述 1.2 第一個(gè)Java程序1.3 Java開(kāi)發(fā)工具1.4 Java程序開(kāi)發(fā)步驟1.5 本章小結(jié)1.6 思考和練習(xí)第31頁(yè)1.3 Java開(kāi)發(fā)工具編寫Java源程序的工具軟件有很多,只要是能編輯純文本的都可以,如Windows自帶的記事本(notepad)和寫字板(wordp
22、ad)程序、UltraEidt、EditPlus等。Java軟件開(kāi)發(fā)人員一般用一些IDE(Integreted Development Environment,集成開(kāi)發(fā)環(huán)境)來(lái)編寫程序,以提高效率和縮短開(kāi)發(fā)周期。第32頁(yè)常用IDE1. Borland的JBuilder2. IBM的Eclipse3. Oracle的JDeveloper4. Macromedia公司的JRUN5. Sun公司的NetBeans與Sun Java Studio 56. BEA公司的WebLogic Workshop7. Apache開(kāi)放源碼組織的Ant8. IntelliJ IDEA9. Android Studi
23、o第33頁(yè)主要內(nèi)容1.1 概述 1.2 第一個(gè)Java程序1.3 Java開(kāi)發(fā)工具1.4 Java程序開(kāi)發(fā)步驟1.5 本章小結(jié)1.6 思考和練習(xí)第34頁(yè)1.4 Java程序開(kāi)發(fā)步驟要編譯和運(yùn)行Java程序,首先要下載并安裝JDK。然后配置環(huán)境變量。JDK的安裝文件可以從Oracle網(wǎng)站/technetwork/java/javase/ downloads/index.html下載,找到JDK 8的下載鏈接,目前更新的補(bǔ)丁為8u191,JDK的安裝文件有多個(gè)不同操作系統(tǒng)的版本,每種操作系統(tǒng)又分64位和32位兩個(gè)不同的版本,這些我們選擇下載的是Windows操作系統(tǒng)中的32位版本,下載得到的文件為
24、jdk-8u191-windows-i586.exe第35頁(yè)1.4.1 安裝JDKjdk-8u191-windows-i586.exe是一個(gè)自解壓文件,雙擊即可解壓縮,并進(jìn)行安裝工作。安裝程序首先收集一些信息,用于安裝的選擇,然后才開(kāi)始復(fù)制文件、設(shè)置Windows注冊(cè)表等。安裝過(guò)程中,只需按照提示一步一步操作即可。默認(rèn)的安裝目錄為“C:Program Files (x86)Javajdk1.8.0_191”(注意:該路徑后面配置環(huán)境變量時(shí)要用到),讀者也可根據(jù)自己需要更改安裝路徑第36頁(yè)1.4.1 安裝JDK(1) bin文件夾:bin文件夾中包含編譯器(javac.exe)、解釋器(java
25、.exe)、Applet 查看器(appletviewer.exe)等Java命令的可執(zhí)行文件。 (2) lib文件夾:lib文件夾存放了一系列Java類庫(kù)。(3) jre文件夾:jre文件夾存放Java運(yùn)行時(shí)可能需要的一些可執(zhí)行文件和類庫(kù)。(4) include文件夾:include文件夾存放一些頭文件。第37頁(yè)1.4.2 環(huán)境變量配置(1) 在桌面上右擊“我的電腦”圖標(biāo),從彈出的快捷菜單中選擇“屬性”命令,打開(kāi)“系統(tǒng)屬性”對(duì)話框。(2) 打開(kāi)“系統(tǒng)屬性”對(duì)話框中的“高級(jí)”選項(xiàng)卡,單擊“環(huán)境變量”按鈕,打開(kāi)“環(huán)境變量”對(duì)話框。該對(duì)話框分為兩部分,上半部分用于設(shè)置用戶環(huán)境變量,下半部分則用于設(shè)
26、置系統(tǒng)環(huán)境變量。它們的區(qū)別是:用戶變量只對(duì)本用戶有效,且設(shè)置后無(wú)須重新啟動(dòng)計(jì)算機(jī);系統(tǒng)變量對(duì)任何用戶均有效,但設(shè)置后需要重啟機(jī)器才能生效。一般情況下,配置為用戶變量即可。這里共需要配置兩個(gè)用戶變量:path和classpath。第38頁(yè)1.4.2 環(huán)境變量配置若原本沒(méi)有path用戶變量,就新建一個(gè),并將變量值設(shè)置為“C:Program Files (x86)Javajdk1.8.0_191bin”如果已經(jīng)存在path用戶變量,則直接將JDK的bin目錄配置到環(huán)境變量path中。打開(kāi)“編輯用戶變量”對(duì)話框,在“變量值”文本框中的最前面添加如下內(nèi)容:“C:Program Files (x86)Ja
27、vajdk1.8.0_191bin;”(注意在引號(hào)的內(nèi)容中,最后有一個(gè)分號(hào),這個(gè)一定不能缺少)第39頁(yè)1.4.2 環(huán)境變量配置若原本沒(méi)有classpath用戶變量,則新建一個(gè),設(shè)置其變量值為“C:Program Files (x86)Javajdk1.8.0_191lib”。此外,當(dāng)運(yùn)行所編寫的Java程序時(shí),一般還需要將相應(yīng)的工作目錄(即存放Java程序及編譯過(guò)的字節(jié)碼文件的目錄)也添加到classpath的變量值中,以便程序運(yùn)行時(shí)能找到用戶所編寫的Java類。這一點(diǎn)一定要格外注意,因?yàn)楹芏嗳嗽诔鯇W(xué)Java時(shí)會(huì)忘記,導(dǎo)致程序運(yùn)行失敗。第40頁(yè) 查看環(huán)境變量命令set第41頁(yè)1.4.3 編譯運(yùn)
28、行假定程序HelloWorld.java存放在“D:workspace第1章”文件夾中,打開(kāi)DOS命令行窗口,輸入“javac HelloWorld.java”命令對(duì)源程序進(jìn)行編譯操作,編譯出錯(cuò),編譯器找不到文件,解決辦法是進(jìn)入HelloWorld所在的文件夾,然后再運(yùn)行“javac Hello.java”命令,此時(shí),源程序編譯成功,系統(tǒng)自動(dòng)在工作目錄下生成一個(gè)字節(jié)碼文件HelloWorld.class,這是一個(gè)二進(jìn)制格式的文件,供解釋運(yùn)行時(shí)使用。第42頁(yè)1.4.3 編譯運(yùn)行編譯成功后就可以執(zhí)行該程序了,運(yùn)行Java程序的命令為“java HelloWorld”。這里要注意的是,java命令和
29、字節(jié)碼文件名(不含擴(kuò)展名.class)之間要至少有一個(gè)空格間隔開(kāi)。然后按回車鍵第43頁(yè)1.4.3 編譯運(yùn)行有些初學(xué)者可能會(huì)得不到圖1-12所示的正確結(jié)果,而是出現(xiàn)錯(cuò)誤信息,如圖1-13所示。這是怎么回事呢?試圖運(yùn)行HelloWorld字節(jié)碼文件,卻失敗了。提示“找不到或無(wú)法加載主類 HelloWorld” (如果是英文版可能提示:Exception in thread main java.lang.NoClassDefFoundError: HelloWorld)。這是因?yàn)閏lasspath不包含當(dāng)前路徑,解決上述問(wèn)題的有效辦法是將當(dāng)前路徑(可以用英文句點(diǎn)“.”表示)添加到classpath環(huán)
30、境變量中(編輯classpath環(huán)境變量,在原“變量值”的最前面添加“.;”),這樣在執(zhí)行程序就沒(méi)有問(wèn)題了。第44頁(yè)1.4.3 編譯運(yùn)行初學(xué)者還可能會(huì)碰到這樣的情形,上次編譯運(yùn)行成功的程序,后來(lái)再運(yùn)行卻失敗了,而程序一點(diǎn)也沒(méi)動(dòng)! 細(xì)心的讀者可能會(huì)發(fā)現(xiàn)這次執(zhí)行命令的路徑變成了“C:UsersAdministrator”,與原來(lái)應(yīng)用程序所在的目錄不一樣,原來(lái)的路徑保證可以找到本路徑下的字節(jié)碼文件,而現(xiàn)在路徑不一樣了,所以無(wú)法找到主類了。解決這一問(wèn)題的有效辦法就是切換到應(yīng)用程序所在目錄在執(zhí)行,或者將應(yīng)用程序所在目錄添加到classpath環(huán)境變量中,這樣不管當(dāng)前路徑是什么都能找到相應(yīng)的class字節(jié)
31、碼文件,但是,不建議這樣做,因?yàn)橥ǔN覀儠?huì)在工作目錄下面建多個(gè)文件夾分類存放不同的文件,如果要運(yùn)行的文件較多且在不同的目錄時(shí),需要添加到classpath中的目錄太多。第45頁(yè)編譯運(yùn)行Java AppletApplet的編譯過(guò)程跟編譯Java應(yīng)用程序相同,也是使用javac命令生成字節(jié)碼文件。下面以前面的HelloWorldApplet.java為例介紹Java Applet的編譯和運(yùn)行過(guò)程。打開(kāi)命令行窗口,切換到應(yīng)用程序所在目錄,然后輸入“javac HelloWorldApplet.java”命令對(duì)源程序進(jìn)行編譯操作,編譯成功后生成字節(jié)碼文件HelloWorldApplet.class。A
32、pplet的運(yùn)行與應(yīng)用程序不同,applet要運(yùn)行在瀏覽器中,所以我們還需要?jiǎng)?chuàng)建一個(gè)HTML文件。然后可以直接用瀏覽器(IE或Chrome等)或者使用appletviewer來(lái)加載并顯示這個(gè)HTML文件。第46頁(yè)編譯運(yùn)行Java Applet新建一個(gè)名為HelloApplet.html的HTML文件,輸入如下代碼:HelloWorld Applet第47頁(yè)編譯運(yùn)行Java Applet可以直接雙擊HTML文件用瀏覽器打開(kāi)該頁(yè)面,查看Applet運(yùn)行效果,也可以在命令行使用appletviewer工具(appletviewer也是JDKbin目錄下的一個(gè)可執(zhí)行文件)來(lái)運(yùn)行,命令格式如下:appl
33、etviewer HelloApplet.html 第48頁(yè)主要內(nèi)容1.1 概述 1.2 第一個(gè)Java程序1.3 Java開(kāi)發(fā)工具1.4 Java程序開(kāi)發(fā)步驟1.5 本章小結(jié)1.6 思考和練習(xí)第49頁(yè)1.5 本章小結(jié) 本章對(duì)Java做了初步的介紹,使讀者對(duì)Java的特點(diǎn)有所了解,并通過(guò)經(jīng)典的HelloWorld程序介紹了Java應(yīng)用程序和Java Applet開(kāi)發(fā)、編譯和運(yùn)行的基本步驟。首先介紹了Java的起源與發(fā)展歷程、Java的特點(diǎn)以及Java與其他編程語(yǔ)言的關(guān)系。接下來(lái)用Java語(yǔ)言分別創(chuàng)建了兩種類型的HelloWorld程序:Java應(yīng)用程序和Java Applet。然后對(duì)比較流行的
34、Java開(kāi)發(fā)工具做了簡(jiǎn)單介紹。最后講述了Java程序的開(kāi)發(fā)步驟,包括下載和安裝JDK、配置環(huán)境變量、編寫Java源程序、編譯Java源程序和執(zhí)行字節(jié)碼文件等。第50頁(yè)主要內(nèi)容1.1 概述 1.2 第一個(gè)Java程序1.3 Java開(kāi)發(fā)工具1.4 Java程序開(kāi)發(fā)步驟1.5 本章小結(jié)1.6 思考和練習(xí)第51頁(yè)1.6 思考和練習(xí)1. 簡(jiǎn)述Java的發(fā)展歷程。2. Java語(yǔ)言有哪些特點(diǎn)?3. 配置JDK環(huán)境變量時(shí),需要配置哪兩個(gè)環(huán)境變量? 4. 簡(jiǎn)述Java應(yīng)用程序的開(kāi)發(fā)步驟。5. 上機(jī)練習(xí):編寫一個(gè)Java應(yīng)用程序,實(shí)現(xiàn)分行顯示字符串“Welcome to Java programming”中的
35、4個(gè)單詞。第52頁(yè)第2章 Java編程基礎(chǔ) 本章概述 本章的學(xué)習(xí)目標(biāo)主要內(nèi)容第53頁(yè)本章概述學(xué)習(xí)一門語(yǔ)言,總是從它的基本語(yǔ)法學(xué)起,本章將從Java程序的基本元素講起,詳細(xì)介紹Java的基本語(yǔ)法,包括標(biāo)志符與關(guān)鍵字、常量與變量、數(shù)據(jù)類型、Java運(yùn)算符與表達(dá)式以及流程控制語(yǔ)句等。這些都是編程的基礎(chǔ),內(nèi)容不難,但要掌握好卻不易,尤其需要理解變量以及不同的數(shù)據(jù)類型的含義。第54頁(yè)本章的學(xué)習(xí)目標(biāo)掌握J(rèn)ava語(yǔ)言的基本語(yǔ)法理解數(shù)據(jù)類型及變量的含義掌握變量的聲明與使用掌握J(rèn)ava的運(yùn)算符及其優(yōu)先級(jí)理解復(fù)合語(yǔ)句的概念第55頁(yè)主要內(nèi)容2.1 引 言2.2 基本數(shù)據(jù)類型2.3 程序語(yǔ)句2.4 本章小結(jié)2.5 思
36、考和練習(xí)第56頁(yè)2.1 引言 對(duì)于初學(xué)者而言,學(xué)習(xí)一門編程語(yǔ)言好比學(xué)習(xí)一門外語(yǔ),首先要掌握它的語(yǔ)法,只有語(yǔ)法正確了,程序才能通過(guò)編譯系統(tǒng)的編譯并被執(zhí)行。第57頁(yè)2.1.1 符號(hào)Java程序中包含的基本符號(hào)元素有如下幾類:字母:AZ,az,美元符號(hào)$和下劃線(_)。數(shù)字:09。算術(shù)運(yùn)算符:+,-,*,/,%。關(guān)系運(yùn)算符:,=,=,!=,=。邏輯運(yùn)算符:!,&和|。位運(yùn)算符:,&,|,。賦值運(yùn)算符:=。其他符號(hào):(),等。第58頁(yè)標(biāo)識(shí)符本書中的標(biāo)識(shí)符特指用戶自定義的標(biāo)識(shí)符。在Java中,標(biāo)識(shí)符必須以字母、美元符號(hào)或者下劃線打頭,后接字母、數(shù)字、下劃線或美元符號(hào)串。另外,Java語(yǔ)言對(duì)標(biāo)識(shí)符的有效字
37、符個(gè)數(shù)不做限定。合法的標(biāo)識(shí)符如a、b、c、x、y、z、result、sum、value、a2、x3、_a、$b等。非法的標(biāo)識(shí)符如2a、3x、byte、class、&a、x-value、new、true、www等。為了提高程序的可讀性,以下特別列舉幾個(gè)較為流行的標(biāo)識(shí)符命名約定。(1) 一般標(biāo)識(shí)符定義應(yīng)盡可能達(dá)意,如value、result、number、getColor、getNum、setColor、setNum等。(2) final變量的標(biāo)識(shí)符一般全部用大寫字母,如final double PI=3.1415(3) 類名一般用大寫字母開(kāi)頭,如Test、Demo。第59頁(yè)關(guān)鍵字關(guān)鍵字是Java
38、語(yǔ)言內(nèi)置的標(biāo)識(shí)符,有特定的作用。所有Java關(guān)鍵字都不能被用作用戶的標(biāo)識(shí)符,關(guān)鍵字用英文小寫字母表示。第60頁(yè)2.1.2 分隔符Java中的分隔符可分兩大類;空白符和可見(jiàn)分隔符。1. 空白符空白符在程序中主要起間隔作用,編譯系統(tǒng)利用它來(lái)區(qū)分程序的不同元素??瞻追崭?、制表符、回車和換行符等,程序各基本元素之間通常用一個(gè)或多個(gè)空白符進(jìn)行間隔。第61頁(yè)可見(jiàn)分隔符可見(jiàn)分隔符也是用來(lái)間隔程序基本元素的,Java中,主要有6種可見(jiàn)分隔符。(1) “/”:?jiǎn)涡凶⑨尫?,該符?hào)以后的本行內(nèi)容均為注釋,輔助程序員閱讀程序,注釋內(nèi)容將被編譯系統(tǒng)忽略。(2) “/*”和“*/”:“/*”和“*/”是配對(duì)使用的多
39、行注釋符,以“/*”開(kāi)始,至“*/”結(jié)束的部分均為注釋內(nèi)容。(3) “;”:分號(hào)用來(lái)標(biāo)識(shí)一個(gè)程序語(yǔ)句的結(jié)束,在編寫完一條語(yǔ)句之后,一定要記得添加語(yǔ)句結(jié)束標(biāo)志分號(hào),這點(diǎn)是多數(shù)初學(xué)者容易遺忘的。(4) “,”:逗號(hào)一般用來(lái)間隔同一類型的多個(gè)變量的聲明,或者間隔方法中的多個(gè)參數(shù)。(5) “:”:冒號(hào)可以用來(lái)說(shuō)明語(yǔ)句標(biāo)號(hào),或者用于switch語(yǔ)句中的case分句。(6) “”和“”:花括號(hào)也是成對(duì)出現(xiàn)的,“”標(biāo)識(shí)開(kāi)始,“”標(biāo)識(shí)結(jié)束,可以用來(lái)定義類體、方法體、復(fù)合語(yǔ)句或者進(jìn)行數(shù)組的初始化等。第62頁(yè)2.1.3 常量在Java程序中使用的直接量稱為常量。它是用戶在程序中“寫死”的量,這個(gè)量在程序執(zhí)行過(guò)程中
40、都不會(huì)改變。布爾類型的取值范圍只有true或false兩個(gè)值,因而其常量值只能是true或false,而且true或false只能賦值給布爾類型的變量。不過(guò),Java語(yǔ)言還規(guī)定布爾表達(dá)式的值為0可以代表false,而1(或其他非0值)則表示true。第63頁(yè)整數(shù)常量整數(shù)常量在程序中是經(jīng)常出現(xiàn)的,一般習(xí)慣上以十進(jìn)制表示,如10、100等,但同時(shí)也可以以其他進(jìn)制,如八進(jìn)制或十六進(jìn)制進(jìn)行表示。用八進(jìn)制表示時(shí),需要在數(shù)字前加0示意,而十六進(jìn)制則需加0 x(或0X)標(biāo)識(shí),如010(十進(jìn)制值8)、070(十進(jìn)制值56)、0 x10(十進(jìn)制值16)、0Xf0(十進(jìn)制值240)。程序中出現(xiàn)的整數(shù)值一般默認(rèn)分配
41、4個(gè)字節(jié)的空間進(jìn)行存儲(chǔ),即其數(shù)據(jù)類型為int。但當(dāng)整數(shù)值超出int的取值范圍(詳見(jiàn)表2-2)時(shí),系統(tǒng)則自動(dòng)用8個(gè)字節(jié)空間來(lái)存儲(chǔ),即其類型為long型。若要將數(shù)值不大的整數(shù)常量也用long類型來(lái)存儲(chǔ),可以在數(shù)值后添加L (或小寫l)后綴,如22L。第64頁(yè)浮點(diǎn)數(shù)浮點(diǎn)數(shù)即實(shí)數(shù),它包含小數(shù)點(diǎn),可以用兩種方式進(jìn)行表示:標(biāo)準(zhǔn)式和科學(xué)記數(shù)式。標(biāo)準(zhǔn)式是由整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分構(gòu)成,如1.5、2.2、80.5等都是標(biāo)準(zhǔn)式的浮點(diǎn)數(shù)??茖W(xué)記數(shù)法是由一個(gè)標(biāo)準(zhǔn)式跟上一個(gè)以10為底的冪構(gòu)成,兩者之間用E(或e)間隔開(kāi),如1.2e+6、5e-8和3E10等都是以科學(xué)記數(shù)法表示的浮點(diǎn)數(shù)。在程序中,一般浮點(diǎn)數(shù)的默認(rèn)數(shù)據(jù)類
42、型為double,即用8個(gè)字節(jié)空間來(lái)存放,當(dāng)然也可以用F(或f)后綴來(lái)限定其類型為float,如55.5F、22.2f等。第65頁(yè)字符常量字符常量是指用一對(duì)單引號(hào)括起來(lái)的字符,如A、a、1、和*等。所有的可見(jiàn)ASCII碼字符都可以用單引號(hào)括起來(lái)作為字符常量。此外,Java語(yǔ)言還規(guī)定了一些轉(zhuǎn)義字符,這些轉(zhuǎn)義字符以反斜杠開(kāi)頭,將其后的字符轉(zhuǎn)變?yōu)榱硗獾暮x,如表2-1所示。需要注意的是,反斜杠后的數(shù)字表示Unicode字符集的字符,而不是ASCII碼字符集。第66頁(yè)字符串常量字符串常量早在本書第1章中就接觸過(guò)了:System.out.println(Hello World!);上述語(yǔ)句中,用雙引號(hào)括
43、起來(lái)的Hello World!就是一字符串常量需要注意的是,單個(gè)的字符加上雙引號(hào),也是字符串常量,如:N (字符串常量)N (字符常量)第67頁(yè)2.1.4 變量在程序執(zhí)行過(guò)程中其值可以改變的數(shù)據(jù),稱為變量。每個(gè)變量都必須有唯一的名稱來(lái)標(biāo)識(shí)它,即變量名。變量名由程序設(shè)計(jì)者命名,但要注意必須是合法的標(biāo)識(shí)符。為了提高程序的可讀性,建議應(yīng)根據(jù)變量的實(shí)際意義進(jìn)行命名。一般地,一個(gè)變量只能屬于某一種數(shù)據(jù)類型,并應(yīng)在定義該變量時(shí)就給出聲明,數(shù)據(jù)類型確定了該變量的取值范圍,同時(shí)也確定了對(duì)該變量所能執(zhí)行的操作或運(yùn)算。Java語(yǔ)言提供了8種基本的數(shù)據(jù)類型:byte、short、int、long、char、bool
44、ean、float和double。第68頁(yè)2.1.4 變量byte age; (存放某人的年齡)short number; (存放某大學(xué)的人數(shù))char gender; (存放某人的性別)double balance; (存放某賬戶的余額)boolean flag; (存放布爾值)變量的定義方式很簡(jiǎn)單:在數(shù)據(jù)類型后加上變量名,并在結(jié)尾添加分號(hào)“;”,但要注意數(shù)據(jù)類型和變量名之間至少要間隔一個(gè)空格。如果要同時(shí)定義同一類型的多個(gè)變量,可以在變量名之間用逗號(hào)分隔,例如:byte my_age,his_age,her_age;變量一經(jīng)定義,系統(tǒng)將會(huì)為其分配一定長(zhǎng)度的存儲(chǔ)空間,在程序中用到該變量時(shí),就需
45、要在對(duì)應(yīng)的內(nèi)存中進(jìn)行讀數(shù)據(jù)或?qū)憯?shù)據(jù)操作,通常稱這種操作為對(duì)變量的訪問(wèn)。第69頁(yè)final變量final變量的定義與普通變量類似,但其所起的作用卻是類似于前面講的常量。定義final變量的方式有兩種:定義的同時(shí)初始化和先定義后初始化。(1) 定義的同時(shí)初始化final double PI = 3.14;(2) 先定義后初始化final double PI ;PI = 3.14;在程序設(shè)計(jì)時(shí),一般將程序中多次要用到的常量值定義為final變量,這樣在程序中就可以通過(guò)final變量名來(lái)引用該常量值,以減少程序的出錯(cuò)概率,將來(lái)如果常量值發(fā)生變化只需修改一處即可。雖然final變量名也可以用小寫字母,但
46、為了便于識(shí)別,通常使用大寫字母命名final變量。第70頁(yè)主要內(nèi)容2.1 引 言2.2 基本數(shù)據(jù)類型2.3 程序語(yǔ)句2.4 本章小結(jié)2.5 思考和練習(xí)第71頁(yè)2.2 基本數(shù)據(jù)類型Java提供了8種基本數(shù)據(jù)類型,它們?cè)趦?nèi)存中所占據(jù)的存儲(chǔ)空間如表2-2 所示。這8種基本數(shù)據(jù)類型可以分為以下4組。(1) 布爾型:boolean。(2) 整型:byte、short、int和long。(3) 浮點(diǎn)型(實(shí)型):float和double。(4) 字符型:char。第72頁(yè)2.2.1 布爾型布爾類型用關(guān)鍵字boolean來(lái)標(biāo)識(shí),其取值只有兩種:true(邏輯真)和false(邏輯假)。它是最簡(jiǎn)單的數(shù)據(jù)類型。布
47、爾類型的數(shù)據(jù)可以參加邏輯運(yùn)算,并構(gòu)成邏輯表達(dá)式,其結(jié)果也是布爾值,常用來(lái)作為分支、循環(huán)結(jié)構(gòu)中的條件表達(dá)式。boolean flag1 = true;boolean flag2 = 35;boolean flag3 = 1;第73頁(yè)2.2.2 整型 用關(guān)鍵字byte、short、int和long聲明的數(shù)據(jù)類型都是整數(shù)類型,簡(jiǎn)稱整型。整型的值可以是正整數(shù)、負(fù)整數(shù)或者零。Java不支持無(wú)符號(hào)的、只是正值的整數(shù)。例如,222、-211、0、2000、-2000等都是合法的整型值,而222.2、2a2等是非法的,222.2有小數(shù)點(diǎn),不是整型(后面會(huì)知道它是浮點(diǎn)型),2a2含有非數(shù)字字符,也不可能是整型值
48、。第74頁(yè)bytebyte類型是整型中最小的,它只占據(jù)1個(gè)字節(jié)的存儲(chǔ)空間,由于采用補(bǔ)碼方式,其取值范圍為-128127,適合用來(lái)存儲(chǔ)如下幾類的數(shù)據(jù):人的年齡、定期存款的存儲(chǔ)年限、圖書館借書冊(cè)數(shù)、樓層數(shù)等,這類數(shù)據(jù)一般取值都在該范圍之內(nèi)。若用byte變量來(lái)存放較大的數(shù),就會(huì)產(chǎn)生溢出錯(cuò)誤,如:byte rs = 10000;/定義rs變量存放清華大學(xué)的學(xué)生人數(shù)第75頁(yè)shortshort類型可以存放的數(shù)值范圍為:-32768 +32767,因而如下語(yǔ)句是正確的。short rs = 10000;/正確一個(gè)short類型的整型變量占據(jù)的存儲(chǔ)空間為2個(gè)字節(jié),占據(jù)的空間大了,其表示能力(取值范圍)自然就
49、大。同樣的,假如變量rs要用來(lái)存放當(dāng)前全國(guó)高校的在讀大學(xué)生數(shù)量,則short類型又不夠了,而需要用更大的,如int類型。第76頁(yè)intint類型占據(jù)4個(gè)字節(jié),可以存儲(chǔ)大概在-21億21億范圍之間的任意整數(shù)。該類型在程序設(shè)計(jì)中是較常用的數(shù)據(jù)類型之一,且程序中整型常量的默認(rèn)數(shù)據(jù)類型就是int,因?yàn)橐话闱闆r,int就夠用了,但是現(xiàn)實(shí)生活中,還是有不少情況需要用到更大的數(shù),如世界人口、某銀行的存款額、世界巨富的個(gè)人資產(chǎn)、某股票的市值等,所以Java還提供了更大的整型long類型。第77頁(yè)longlong類型占據(jù)8個(gè)字節(jié),能表示的數(shù)值范圍為-9.21018 +9.21018。一般如不是應(yīng)用需要,應(yīng)盡量少
50、用,可以減少存儲(chǔ)空間的支出。當(dāng)然,long也不是無(wú)限的,在一些特殊領(lǐng)域,如航空航天,它也會(huì)不夠用。這時(shí)可以通過(guò)定義多個(gè)整型變量來(lái)組合表示這樣的數(shù)據(jù),即對(duì)數(shù)據(jù)進(jìn)行分段表示。不過(guò),在真正的實(shí)踐中,這些領(lǐng)域的計(jì)算任務(wù)一般會(huì)由支持更大數(shù)據(jù)類型的計(jì)算機(jī)系統(tǒng)來(lái)完成,如大型機(jī)、巨型機(jī)。第78頁(yè)2.2.3 浮點(diǎn)型浮點(diǎn)型有兩種,分別用關(guān)鍵字float和double來(lái)標(biāo)識(shí)。其中,double的精度較高,表示范圍也更廣在某些處理器上,單精度運(yùn)算速度更快,并且占用的空間是雙精度的一半,但是當(dāng)數(shù)值非常大或非常小時(shí)會(huì)變得不精確。在針對(duì)高速數(shù)學(xué)運(yùn)算進(jìn)行了優(yōu)化的某些現(xiàn)代處理器上,實(shí)際上雙精度數(shù)值的運(yùn)算速度更快。大部分?jǐn)?shù)學(xué)函數(shù)
51、,如sin()、cos()和sqrt(),都返回雙精度值。如果需要在很多次迭代運(yùn)算中保持精度,或是操作非常大的數(shù)值,則需要使用double類型。第79頁(yè)floatpublic class Exam2_3 public static void main(String args) float pi = 3.1415f; float r = 6.5f; float v = 2*pi*r; System.out.println(該圓周長(zhǎng)為:+v); 該圓周長(zhǎng)為:40.8395第80頁(yè)doubledouble為雙精度浮點(diǎn)型,程序中出現(xiàn)的浮點(diǎn)數(shù)在默認(rèn)情況下即為double類型public class Ex
52、am2_4 public static void main(String args) double pi = 3 double r =6.5; double v = 2*pi*r; System.out.println(該圓周長(zhǎng)為:+v); 該圓周長(zhǎng)為:40.84070449654第81頁(yè)2.2.4 字符型Java語(yǔ)言用Unicode字符集來(lái)定義字符型這量,因此一個(gè)字符需要兩個(gè)字節(jié)的存儲(chǔ)空間,這點(diǎn)與C/C+不同。前面介紹過(guò)字符常量,下面請(qǐng)看字符型變量的定義。char ch; /定義字符型變量chch = 1; /給ch賦初值為1字符型變量在程序中可用作代號(hào),例如ch為
53、1可代表成功,為0則代表失敗;為F表示女性,為M表示男性等。第82頁(yè)2.2.5 數(shù)據(jù)類型轉(zhuǎn)換不同數(shù)據(jù)類型的變量之間最好不要互相賦值,但在特定的情況下,存在變量類型轉(zhuǎn)換的需要,如將一個(gè)int類型的值賦給一個(gè)long類型的變量,或?qū)⒁粋€(gè)double類型的值賦給一個(gè)float類型的變量。前者的轉(zhuǎn)換不會(huì)破壞變量的原有值,這種轉(zhuǎn)換一般系統(tǒng)會(huì)自動(dòng)進(jìn)行,而后者的轉(zhuǎn)換很可能會(huì)破壞變量的原有值,這種轉(zhuǎn)換需要程序員在程序中明確指出,即進(jìn)行強(qiáng)制類型轉(zhuǎn)換。第83頁(yè)自動(dòng)類型轉(zhuǎn)換數(shù)值類型(包括整型和浮點(diǎn)型)是相互兼容的,只要目標(biāo)類型范圍大于源類型就會(huì)發(fā)生自動(dòng)類型轉(zhuǎn)換,如byte到short或int、short到int、f
54、loat到double等,系統(tǒng)都能自動(dòng)進(jìn)行轉(zhuǎn)換。然而,不存在從數(shù)值類型到char或boolean類型的自動(dòng)轉(zhuǎn)換。char和boolean之間也不存在自動(dòng)轉(zhuǎn)換。第84頁(yè)自動(dòng)類型轉(zhuǎn)換當(dāng)將字面整數(shù)常量保存到byte、short、long或char類型的變量中時(shí),Java也會(huì)執(zhí)行自動(dòng)類型轉(zhuǎn)換。需要特別說(shuō)明的是,在Java中,字面整數(shù)常量的默認(rèn)類型為int,例如下面聲明一個(gè)long型變量并將其初始化為一個(gè)很大的整數(shù):long g = 9223372036854775807;解決的方法是在數(shù)值后面加上L,指明這個(gè)字面常量是long型數(shù)據(jù): long value = 9223372036854775807L
55、;第85頁(yè)強(qiáng)制類型轉(zhuǎn)換而對(duì)于變窄轉(zhuǎn)換,如long到short、double到float,不兼容轉(zhuǎn)換;如float到short、char到short等,則需要進(jìn)行強(qiáng)制轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換是一種顯式類型轉(zhuǎn)換,它的一般形式如下:target-type varName=(target-type) value第86頁(yè)表達(dá)式中的自動(dòng)類型提升byte a = 40;byte b = 50;byte c = 100;int d = a * b / c;在計(jì)算a*b的結(jié)果時(shí),很容易超出byte操作數(shù)的范圍。為了解決這類問(wèn)題,當(dāng)對(duì)表達(dá)式求值時(shí),Java自動(dòng)將每個(gè)byte、short或char操作數(shù)提升為int類型。
56、因此,盡管a和b都被指定為byte類型,但是在計(jì)算a*b時(shí),兩者都被提升為int類型,結(jié)果也是int類型,所以中間表達(dá)式(50*40)的結(jié)果2000(超出byte的范圍)是合法的。這就是表達(dá)式中的自動(dòng)類型提升。第87頁(yè)表達(dá)式中的自動(dòng)類型提升盡管自動(dòng)類型提升很有用,但是有時(shí)也會(huì)導(dǎo)致難以理解的編譯時(shí)錯(cuò)誤。例如,下面的代碼看起來(lái)是正確的,但是卻會(huì)產(chǎn)生編譯錯(cuò)誤:byte b = 50;b = b - 2; 上面的代碼試圖將50-2,一個(gè)完全有效的byte值保存到一個(gè)byte變量中。但是,編譯器會(huì)提示“Type mismatch: cannot convert from int to byte”(不兼容
57、的類型: 從int轉(zhuǎn)換到byte可能會(huì)有損失)。這是因?yàn)椋?dāng)計(jì)算表達(dá)式的值時(shí),操作數(shù)被自動(dòng)提升為int類型,所以結(jié)果也被提升為int類型。因此,應(yīng)當(dāng)使用顯式的強(qiáng)制類型轉(zhuǎn)換,byte b = 50;b = (byte)(b - 2);第88頁(yè)表達(dá)式中的自動(dòng)類型提升(1) 所有byte、short和char類型的值都被提升為int類型。(2) 如果有一個(gè)操作數(shù)是long類型,就將整個(gè)表達(dá)式提升為long類型。(3) 如果有一個(gè)操作數(shù)是float類型,就將整個(gè)表達(dá)式提升為float類型。(4) 如果有一個(gè)操作數(shù)為double類型,結(jié)果將為double類型。第89頁(yè)主要內(nèi)容2.1 引 言2.2 基本數(shù)
58、據(jù)類型2.3 程序語(yǔ)句2.4 本章小結(jié)2.5 思考和練習(xí)第90頁(yè)2.3 程序語(yǔ)句到目前為止,前面出現(xiàn)過(guò)的程序語(yǔ)句有:輸出語(yǔ)句System.out.println()以及變量聲明語(yǔ)句。每一條程序語(yǔ)句的末尾都必須加上分號(hào)結(jié)束標(biāo)志。本節(jié)介紹一些其他常用程序語(yǔ)句。第91頁(yè)2.3.1 賦值語(yǔ)句variable = expression;這里的“=”不是數(shù)學(xué)中的等號(hào),而是賦值運(yùn)算符,其功能是將右邊表達(dá)式的結(jié)果賦值(即傳遞或存入)給左邊的變量,例如:int i, j;char c;i = 100;c =a;j = i +100;i = j * 10;第92頁(yè)2.3.1 賦值語(yǔ)句特別地,對(duì)于形如“i=i+1;
59、”這樣的賦值語(yǔ)句,可以將其簡(jiǎn)寫為“i+;”或者“+i;”,并稱之為自增語(yǔ)句,同樣還有自減語(yǔ)句“i-;”或者“-i;”,它們等價(jià)于“i=i-1;”語(yǔ)句。“+”和“-”叫做自增和自減運(yùn)算符,它們寫在變量的前面與后面有時(shí)是有區(qū)別的第93頁(yè)2.3.1 賦值語(yǔ)句public class Exam2_6 public static void main(String args) int i, j , k = 1; i = k+; j = +k; System.out.println(i=+i); System.out.println(j=+j); i = 1j = 3第94頁(yè)2.3.1 賦值語(yǔ)句當(dāng)自增符號(hào)“
60、+”寫在變量后面時(shí),先訪問(wèn)后自增,即“i = k+;”語(yǔ)句等價(jià)于“i=k;”和“k=k+1;”兩條語(yǔ)句。而自增符號(hào)“+”寫在變量前面時(shí),則先自增后訪問(wèn),即“j = +k;”語(yǔ)句相當(dāng)于“k=k+1;”和“j=k;”兩條語(yǔ)句,因此得到上述的運(yùn)行結(jié)果。這點(diǎn)對(duì)于自減語(yǔ)句也是一樣的。第95頁(yè)復(fù)合賦值語(yǔ)句+= /加后賦值-= /減后賦值*= /乘后賦值/= /除后賦值%= /取模后賦值“k %=i+j;”語(yǔ)句等價(jià)于“k=k%(i+j);”語(yǔ)句,初學(xué)者常犯的錯(cuò)誤是,將其等價(jià)于沒(méi)有小括號(hào)的“k=k%i+j;”語(yǔ)句,而二者結(jié)果是截然不同的。第96頁(yè)2.3.2 條件表達(dá)式條件表達(dá)式的一般形式如下:Exp1?Exp
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版電廠煤炭采購(gòu)合同與環(huán)保型付款策略3篇
- 2025年碳晶片技術(shù)培訓(xùn)及咨詢合同3篇
- 開(kāi)發(fā)商繼續(xù)履行合同范本(2篇)
- 工廠員工勞動(dòng)合同(2篇)
- 二零二五版貨物代理合同范本3篇
- 二零二五年度棉花價(jià)格指數(shù)編制與應(yīng)用合同4篇
- 2025年度個(gè)人購(gòu)房借款合同物業(yè)管理服務(wù)協(xié)議3篇
- 二零二五年度中小企業(yè)應(yīng)收賬款質(zhì)押貸款合同范本4篇
- 2025年航空航天產(chǎn)業(yè)投資入股分紅合同3篇
- 2025年度租賃車輛智能監(jiān)控服務(wù)合同遠(yuǎn)程管理4篇
- 加強(qiáng)教師隊(duì)伍建設(shè)教師領(lǐng)域?qū)W習(xí)二十屆三中全會(huì)精神專題課
- 2024-2025學(xué)年人教版數(shù)學(xué)七年級(jí)上冊(cè)期末復(fù)習(xí)卷(含答案)
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- 2024年上海市中考數(shù)學(xué)真題試卷及答案解析
- 2024年全國(guó)卷1高考理綜試題及答案
- (完整版)金融市場(chǎng)基礎(chǔ)知識(shí)知識(shí)點(diǎn)歸納-圖文
- 五年級(jí)數(shù)學(xué)(小數(shù)乘除法)計(jì)算題專項(xiàng)練習(xí)及答案
- 小學(xué)數(shù)學(xué)知識(shí)結(jié)構(gòu)化教學(xué)
- 2022年睪丸腫瘤診斷治療指南
- 被執(zhí)行人給法院執(zhí)行局寫申請(qǐng)范本
- 飯店管理基礎(chǔ)知識(shí)(第三版)中職PPT完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論