java基礎(chǔ)課程講義_第1頁
java基礎(chǔ)課程講義_第2頁
java基礎(chǔ)課程講義_第3頁
java基礎(chǔ)課程講義_第4頁
java基礎(chǔ)課程講義_第5頁
已閱讀5頁,還剩120頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

南天金融軟件定制班教材

第一部分Java基礎(chǔ)

培訓(xùn)資源部

2010年7月

目錄

1概述1

2第一章小語言概述2

2.1第一節(jié)程序設(shè)計(jì)語言2

2.2第二節(jié)了解JAA8

3第二章JMA語言基礎(chǔ)16

3.1第一節(jié)標(biāo)識(shí)符與關(guān)鍵字16

3.2第二節(jié)基本數(shù)據(jù)類型16

3.3第三節(jié)變量與常量18

3.4第四節(jié)運(yùn)算符與表達(dá)式19

3.5第五節(jié)流程控制21

3.6第六節(jié)數(shù)組30

4第三章面向?qū)ο蠹夹g(shù)36

4.1第一節(jié)類與對(duì)象36

4.2第二節(jié)類的創(chuàng)建36

4.3第三節(jié)對(duì)象的創(chuàng)建38

4.4第四節(jié)類的封裝42

4.5第五節(jié)類的繼承44

4.6第六節(jié)類的多態(tài)性49

47第七節(jié)接口52

48第八節(jié)內(nèi)部類53

49第九節(jié)包56

5第四章以購高級(jí)特性60

5.1第一節(jié)JEK1.5高級(jí)特性60

5.2第二節(jié)JIK1.6高級(jí)特性62

5.3第三節(jié)J棧常用類62

6第五章異常處理79

6.1第一節(jié)萬?異常處理的基礎(chǔ)知識(shí)79

6.2第二節(jié)異常的分類83

6.3第三節(jié)拋出異常85

6.4第四節(jié)自定義異常類85

6.5第五節(jié)J瓜礙常處理的原則和技巧87

7第六章流和文件處理89

7.1第一節(jié)數(shù)據(jù)流的基本概念89

7.2第二節(jié)文件操作96

7.3第三節(jié)字節(jié)流98

7.4第四節(jié)字符流101

7.5第五節(jié)流的高級(jí)操作104

8第七章網(wǎng)絡(luò)編程107

a1第一節(jié)網(wǎng)絡(luò)編程基礎(chǔ)107

a2第二節(jié)程112

&3第三節(jié)UW程116

1概述

JAVA語言是近年得到迅速推廣應(yīng)用的一種計(jì)算機(jī)語言。JAVA語言功能豐富,表達(dá)能力強(qiáng),

使用靈活方便,應(yīng)用廣,目標(biāo)程序可移植性強(qiáng),具有高級(jí)語言的優(yōu)點(diǎn),同時(shí)還具備跨平臺(tái)的優(yōu)點(diǎn).

本課程是計(jì)算機(jī)類工科各專業(yè)學(xué)習(xí)的一門高級(jí)語言程序設(shè)計(jì)課程,具有一般較強(qiáng)的計(jì)算機(jī)編程知

識(shí)即可學(xué)習(xí)本課程。通過木課程的學(xué)習(xí),學(xué)生應(yīng)掌握J(rèn)AVA語言的基本語法,還應(yīng)掌握面向?qū)ο?/p>

程序設(shè)計(jì)的基本思想,基本概念和基本方法,并能運(yùn)用所學(xué)的知識(shí)和技能對(duì)一般問題進(jìn)行分析和

程序設(shè)計(jì),編制出高效的JAVA語言應(yīng)用程序。

第1頁共125頁

2第一章java語言概述

21第一節(jié)程序設(shè)計(jì)語言

機(jī)器語言

計(jì)算機(jī)所能識(shí)別的語言只有機(jī)器語言,即由o和1構(gòu)成的代碼。但通常人們編程時(shí),不采用

機(jī)器語言,因?yàn)樗浅ky于記憶和識(shí)別。

匯編語言

匯編語言的實(shí)質(zhì)和機(jī)器語言是相同的,都是直接對(duì)硬件操作,只不過指令采用了英文縮寫的

標(biāo)識(shí)符,更容易識(shí)別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編

程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對(duì)應(yīng)實(shí)際操作過程

中的一個(gè)很細(xì)微的動(dòng)作,例如移動(dòng)、自增,因此匯編源程序一般比較冗長、復(fù)雜、容易出錯(cuò),而

且使用匯編語言編程需要有更多的計(jì)算機(jī)專業(yè)知識(shí),但匯編語言的優(yōu)點(diǎn)也是顯而易見的,用匯編

語言所能完成的操作不是?般高級(jí)語言所能實(shí)現(xiàn)的,而且源程序經(jīng)匯編生成的可執(zhí)行文件不僅比

較小,而且執(zhí)行速度很快。

高級(jí)語言

和匯編語言相比,它不但將許多相關(guān)的機(jī)器指令合成為單條指令,并且去掉了與具體操作有

關(guān)但與完成工作無關(guān)的細(xì)節(jié),例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。

解釋類

執(zhí)行方式類似于我們?nèi)粘I钪械摹巴暦g”,應(yīng)用程序源代碼一邊由相應(yīng)語言的解釋器

“翻譯”成目標(biāo)代碼(機(jī)器語言),一邊執(zhí)行,因此效率比較低,而且不能生成可獨(dú)立執(zhí)行的可執(zhí)

行文件,應(yīng)用程序不能脫離其解釋器,但這種方式比較靈活,可以動(dòng)態(tài)地調(diào)整、修改應(yīng)用程序。

編譯類

編譯是指在應(yīng)用源程序執(zhí)行之前,就將程序源代碼“翻譯”成目標(biāo)代碼(機(jī)器語言),因此其

目標(biāo)程序可以脫離其語言環(huán)境獨(dú)立執(zhí)行,使用比較方便、效率較高。但應(yīng)用程序一旦需要修改,

必須先修改源代碼,再重新編譯生成新的目標(biāo)文件才能執(zhí)行,只有目標(biāo)文件而沒有源代碼,修改

第2頁共125頁

很不方便?,F(xiàn)在大多數(shù)的編程語言都是編譯型的,例如VisualC++、VisualFoxpro.Delphi等。

2.1.Uava歷史

從JDK誕生到現(xiàn)在已經(jīng)有16年了。到目前為止,JDK已經(jīng)發(fā)布了6個(gè)版本。在這14年里,

誕生了無數(shù)和Java相關(guān)的技術(shù)和標(biāo)準(zhǔn)?,F(xiàn)在,讓我們從1995年開始,回顧一下Java的產(chǎn)生和發(fā)

展過程。

Java產(chǎn)生背景

1991年4月,Sun公司的JamesGosling領(lǐng)導(dǎo)的綠色計(jì)劃(GreenProject)開始著力發(fā)展一種

分布式系統(tǒng)結(jié)構(gòu),使其能夠在各種消費(fèi)性電子產(chǎn)品上運(yùn)行。Green項(xiàng)目組的成員一開始使用C++

語言來完成這個(gè)項(xiàng)目。山于Green項(xiàng)目組的成員都具有C++背景,所以他們首先把目光鎖定在

C++編譯器上。Gosling首先改寫了C++編譯器。但是,很快他發(fā)現(xiàn)C++存在很多不足,需要研發(fā)

一種新的語言來替代它。

這種語言最初被命名為Oak,目標(biāo)設(shè)定為家用電器等小型系統(tǒng)的編程語言,用來解決諸如電

視機(jī)、電話、鬧鐘、烤面包機(jī)等家用電器的控制和通訊問題。17個(gè)月之后,整個(gè)系統(tǒng)完成,這個(gè)

系統(tǒng)是更類似機(jī)頂盒式的操作系統(tǒng)。不過,在當(dāng)時(shí)市場不成熟的情況下,他們的項(xiàng)目沒有獲得成

功。但Oak語言卻得到了Sun公司總裁的賞識(shí)。

Java產(chǎn)生

直至1994年下半年,由于Internet的迅猛發(fā)展和環(huán)球信息網(wǎng)WWW的快速增長,第一個(gè)全

球信息網(wǎng)絡(luò)瀏覽器Mosaic誕生了。此時(shí),工業(yè)界對(duì)適合在網(wǎng)絡(luò)異構(gòu)環(huán)境下使用的語言有一種非

常急迫的需求。JamesGosling決定改變綠色計(jì)劃的發(fā)展方向,對(duì)Oak進(jìn)行了小規(guī)模的改造。就這

樣,Java在1995年3月23日誕生了。Java的誕生標(biāo)志著互聯(lián)網(wǎng)時(shí)代的開始。Java能夠被應(yīng)用在

全球信息網(wǎng)絡(luò)平臺(tái)上編寫互動(dòng)性極強(qiáng)的Applet程序。1995年的Applet給人們無窮的視覺和腦力

震蕩。其實(shí),Java的誕生頗有一股“有心栽花花不開,無心插柳柳成蔭”的味道。就像Unix和

它的前身MULTICS系統(tǒng)一樣。

Sun在1995年5月23日的SunWorld'95會(huì)議上正式發(fā)布Java和HotJava瀏覽器。同年,有

很多公司先后獲得了Java許可證。如Netscape在1995年8月,Oracle在1995年10月分別獲得

了Java許可證。Sun在1995年發(fā)布第一個(gè)Java版本后,于1996年1月宣布成立新的業(yè)務(wù)部門

一JavaSoft部。這個(gè)部分主要負(fù)責(zé)開發(fā)、銷售并支持基于Java技術(shù)的產(chǎn)品。

Sun雖然在1995年推出了Java,但這只是一種語言,要想開發(fā)復(fù)雜的應(yīng)用程序,必須要有

一個(gè)強(qiáng)大的開發(fā)庫支持才行。Sun在1996年1月23日發(fā)布了JDK1.0。這個(gè)版本包括運(yùn)行環(huán)境(即

JRE)和開發(fā)環(huán)境(即JDK)兩部分。運(yùn)行環(huán)境包括了核心API、集成API,用戶界面APL發(fā)布

技術(shù),Java虛擬機(jī)(JVM)5個(gè)部分。而開發(fā)環(huán)境還包括編譯Java程序的編譯器(BPjavac),在

JDK1.0版本中,除了AWT(一種用于開發(fā)圖形用戶界面的API)外,其他的庫并不完整。

在推出JDK1.0后,緊跟著,Sun在1997年2月18日發(fā)布了JDK1.1,JDK1.1相對(duì)于JDK1.0

最大的改進(jìn)就是為JVM增加了JIT(即時(shí)編譯)編譯器。JIT和傳統(tǒng)的編譯器不同。傳統(tǒng)的編譯

器是編譯一條,運(yùn)行完后再將其扔掉,而JIT會(huì)將經(jīng)常用到的指令保存在內(nèi)容中,在下次調(diào)用時(shí)

第3頁共125頁

就不需要再編譯。這樣,JDK在效率上有了非常大的提升。

21.Java的特點(diǎn)

Sun的"Java白皮書”對(duì)Java做了如下定義。"Java:Asimple,object-oriented,distributed,

interpreted,robust,secure,architecture-neutral,portable,high-performance,multi-threaded,and

dynamiclanguageJava是?種簡單的、面向?qū)ο蟮?、分布式的、解釋?zhí)行的、健壯的、安全的、

結(jié)構(gòu)中立的、可移植的、高效率的、多線程的和動(dòng)態(tài)的語言。Sun公司對(duì)Java的定義充分展示了

Java的如下幾個(gè)特點(diǎn):

簡單

Java是一種簡單的語言。Java在C、C++的基礎(chǔ)上開發(fā),繼承了C和C++的許多特性,同時(shí)

也取消C和C++語言中繁瑣的、難以理解的、不安全的內(nèi)容,如指針、多重繼承等。JDK還提供

了豐富的基礎(chǔ)類庫,具有C或C++編程經(jīng)驗(yàn)的程序員都會(huì)對(duì)這些基礎(chǔ)類庫很熟悉,無需經(jīng)過長時(shí)

間訓(xùn)練即可掌握它。

面向?qū)ο?/p>

Java是一種純面向?qū)ο蟮恼Z言。Java程序面向?qū)ο蟮脑O(shè)計(jì)思路不同于C語言基于過程的程序

設(shè)計(jì)思路。面向?qū)ο蟪绦蛟O(shè)計(jì),具備更好地模擬現(xiàn)實(shí)世界環(huán)境的能力和可重用性。它將待解決的

現(xiàn)實(shí)問題轉(zhuǎn)換成一組分離的程序?qū)ο?,這些對(duì)象彼此之間可以進(jìn)行交互。一個(gè)對(duì)象包含了對(duì)應(yīng)實(shí)

體應(yīng)有的信息以及訪問和改變這些信息的方法。通過這種設(shè)計(jì)方式,所設(shè)計(jì)出來的程序更易于改

進(jìn)、擴(kuò)展、維護(hù)和重用。Java語言提供類、接口和繼承等原語。Java語言只支持類之間的單繼承,

但支持接口之間的多繼承,并支持類與接口間的實(shí)現(xiàn)機(jī)制。Java語言全面支持動(dòng)態(tài)綁定,而C++

語言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定。

分布式

Java是一種分布式的語言。傳統(tǒng)的基于C/S(客戶端/服務(wù)器)架構(gòu)的程序,均采用客戶端向

服務(wù)器提出服務(wù)請(qǐng)求,服務(wù)器再根據(jù)要求執(zhí)行適當(dāng)?shù)某绦虿⒔Y(jié)果返回的方式,所以,服務(wù)器負(fù)

荷較重。Java采用Java虛擬機(jī)架構(gòu),可將許多工作直接交由終端處理,因此,數(shù)據(jù)可以被分布式

處理。止匕外,Java類庫的運(yùn)用,大大減輕了網(wǎng)絡(luò)傳輸?shù)呢?fù)荷。Java類庫包含了支持HTTP和FTP

等基于TCP/IP協(xié)議的子庫。Java應(yīng)用程序可憑借URL打開并訪問網(wǎng)絡(luò)上的對(duì)象,其訪問方式與

訪問本地文件系統(tǒng)幾乎完全相同。分布式網(wǎng)絡(luò)環(huán)境是Java進(jìn)一步發(fā)展的地方。

高效解釋執(zhí)行

Java是高效解釋執(zhí)行的語言。高級(jí)語言程序必須轉(zhuǎn)換為機(jī)器語言程序才能在計(jì)算機(jī)上執(zhí)行。

但是,不同的計(jì)算機(jī)系統(tǒng)所使用的機(jī)器語言不同。為了實(shí)現(xiàn)“一次編譯,隨處運(yùn)行”的目標(biāo),Java

程序在編譯時(shí)并不直接編譯成特定的機(jī)器語言程序,而是編譯成與系統(tǒng)無關(guān)的“字節(jié)碼

(bytecode)由Java虛擬機(jī)(JavaVirtualMachine,JVM)來執(zhí)行。JVM使得Java程序可以“一

第4頁共125頁

次編譯,隨處運(yùn)行"。任何系統(tǒng)只有安裝了Java虛擬機(jī)后,才可以執(zhí)行Java程序。

JVM能直接在任何機(jī)器上執(zhí)行,為字節(jié)碼提供運(yùn)行環(huán)境。當(dāng)JVM解釋執(zhí)行Java程序時(shí),Java

實(shí)時(shí)編譯器(Just-In-Time,JIT)會(huì)將字節(jié)碼譯成目標(biāo)平臺(tái)對(duì)應(yīng)的機(jī)器語言的指令代碼。

早先的許多嘗試解決跨平臺(tái)問題的方案對(duì)性能要求都很高。其他解釋執(zhí)行的語言系統(tǒng),如

BASIC、TCL、PERL都有無法克服的性能缺陷。但是,Java卻可以在非常低檔的CPU上順暢運(yùn)

行。這是因?yàn)镴VM能夠直接使用JIT編譯技術(shù)將經(jīng)過精心設(shè)計(jì)的字節(jié)碼轉(zhuǎn)換成高性能的本機(jī)代碼。

事實(shí)上,隨著JIT編譯器技術(shù)的發(fā)展,Java程序的運(yùn)行速度已接近于C++。因而,“高效且跨平

臺(tái)”對(duì)Java來說已不再矛盾。

健壯性

Java是健壯的語言。為了更好地理解Java的健壯性,先討論一下傳統(tǒng)編程環(huán)境下程序設(shè)計(jì)失

敗的主要原因:內(nèi)存管理錯(cuò)誤和誤操作引起的異常或運(yùn)行時(shí)異常。

在傳統(tǒng)的編程環(huán)境下,內(nèi)存管理是一項(xiàng)困難、乏味的工作。例如,在C或C++中,必須手工

分配、釋放所有的動(dòng)態(tài)內(nèi)存。如果忘記釋放原來分配的內(nèi)存,或是釋放了其他程序正在使用的內(nèi)

存時(shí),系統(tǒng)就會(huì)出錯(cuò)。同時(shí),在傳統(tǒng)的編程環(huán)境下,異常情況可能經(jīng)常由“被零除”、“Null指針

操作”、“文件未找到”等原因引起,必須用既繁瑣又難理解的一大堆指令來進(jìn)行處理。

Java通過自行管理內(nèi)存分配和釋放的方法,從根本上消除了有關(guān)內(nèi)存的問題。Java提供垃圾

收集器,可自動(dòng)收集閑置對(duì)象占用的內(nèi)存。Java提供面向?qū)ο蟮漠惓L幚頇C(jī)制來解決異常處理的

問題。通過類型檢查、Null指針檢測(cè)、數(shù)組邊界檢測(cè)等方法,在程序開發(fā)早期就發(fā)現(xiàn)程序的錯(cuò)誤。

安全

Java是安全的網(wǎng)絡(luò)編程語言。因?yàn)镴ava常被用于網(wǎng)絡(luò)環(huán)境中,為此,Java提供了-一系列的

安全機(jī)制以防惡意代碼攻擊,確保系統(tǒng)安全。Java的安全機(jī)制分為多級(jí),包括Java語言本身的安

全性設(shè)計(jì)以及嚴(yán)格的編譯檢查、運(yùn)行檢查和網(wǎng)絡(luò)接口級(jí)的安全檢查。

Java語言是強(qiáng)類型語言,每種類型都要求嚴(yán)格定義。首先,每個(gè)變量、表達(dá)式都有類型。其

次,所有的數(shù)值傳遞,不管是直接的、還是通過方法調(diào)用經(jīng)由參數(shù)傳遞,都要進(jìn)行類型相容性檢

查。有些語言沒有自動(dòng)進(jìn)行數(shù)據(jù)類型相容性檢查,或?qū)_突的類型進(jìn)行轉(zhuǎn)換的機(jī)制。Java編譯器

對(duì)所有的表達(dá)式和參數(shù)都要進(jìn)行類型相容性的檢查,以確保類型是兼容的。任何類型的不匹配都

是錯(cuò)誤的,在編譯完成之前,錯(cuò)誤必須全部被糾正。此外,Java摒棄指針類型和數(shù)據(jù)類型的隱式

轉(zhuǎn)換,對(duì)內(nèi)存訪問進(jìn)行了嚴(yán)格的限制。Java編譯器在編輯期間并不分配內(nèi)存,而是推遲到運(yùn)行時(shí)

山解釋器決定。這樣,編程人員就無法通過指針來非法訪問內(nèi)存。在運(yùn)行期間,Java的運(yùn)行環(huán)境

提供了4級(jí)安全保障機(jī)制:字節(jié)碼校驗(yàn)器、類裝載器、運(yùn)行時(shí)內(nèi)存布局和文件訪問限制。在網(wǎng)絡(luò)

接口級(jí),用戶可按自己的需要來設(shè)置網(wǎng)絡(luò)訪問權(quán)限。

此外,Java的未來版本將采用公開密鑰法以及其他加密技術(shù),來核實(shí)從網(wǎng)絡(luò)上傳輸過來的代

碼的源主機(jī)及該代碼的完整性。

結(jié)構(gòu)中立

Java是結(jié)構(gòu)中立的語言。Java的設(shè)計(jì)目標(biāo)是要支持網(wǎng)絡(luò)應(yīng)用。一般而言,網(wǎng)絡(luò)是由許多不同

的系統(tǒng)構(gòu)成,包括各種不同的CPU與操作系統(tǒng)。為了讓Java應(yīng)用程序能夠在網(wǎng)絡(luò)上任何地方執(zhí)

行,其編譯器會(huì)產(chǎn)生一種具備結(jié)構(gòu)中立性的對(duì)象文件格式,即Java字節(jié)碼文件。Java字節(jié)碼可在

第5頁共125頁

任何安裝了Java虛擬機(jī)的平臺(tái)上運(yùn)行。

可移植

Java開發(fā)的程序具有可移植性。結(jié)構(gòu)中立是確保程序可移植的必要條件,此外,還需要很多

其他條件的配合。Java在可移植性方面做了許多工作。Java語言規(guī)范中沒有任何“同具體實(shí)現(xiàn)相

關(guān)”的內(nèi)容,解決了所有可能會(huì)影響到Java可移植性方面的問題。例如,在Windows3.1中整數(shù)

(Integer)為16位,在Windows95中整數(shù)為32位,在DECAlpha中整數(shù)為64位,在Intel486

中為32位,不同的操作系統(tǒng)和CPU對(duì)數(shù)據(jù)類型及長度都作了不同的定義,給程序的可移植性帶

來了?定的難度。Java通過定義獨(dú)立于平臺(tái)的基本數(shù)據(jù)類型及其運(yùn)算,使數(shù)據(jù)得以在任何硬件平

臺(tái)上保持一致。事實(shí)上,幾乎所有的CPU都能支持以上數(shù)據(jù)類型,都支持8?64位整數(shù)格式的

補(bǔ)碼運(yùn)算和單/雙精度浮點(diǎn)運(yùn)算。

高效率

Java是高效率的語言。每一次的版本更新,Java在性能上均做出了改進(jìn)。在歷經(jīng)數(shù)個(gè)版本變

更后,Java已經(jīng)擁有與C/C++同樣甚至更好的運(yùn)行性能。如果解釋器速度不慢,Java可以在運(yùn)行

時(shí)直接將目標(biāo)代碼翻譯成機(jī)器指令。使用JVM1秒鐘內(nèi)可調(diào)用300000個(gè)過程,與C/C++不相上

下。

多線程

Java是支持多線程的語言。多線程是一種應(yīng)用程序設(shè)計(jì)方法。線程是從大進(jìn)程里分出來的、

小的、獨(dú)立的進(jìn)程,使得在一個(gè)程序里可同時(shí)執(zhí)行多個(gè)小任務(wù)。多線程帶來的好處是具有更好的

交互性能和實(shí)時(shí)控制性能。但采用傳統(tǒng)的程序設(shè)計(jì)語言(如C/C++)實(shí)現(xiàn)多線程非常困難。Java

實(shí)現(xiàn)了多線程技術(shù),提供了一些簡便地實(shí)現(xiàn)多線程的方法,并擁有?套高復(fù)雜性的同步機(jī)制。

動(dòng)態(tài)

Java語言具有動(dòng)態(tài)特性。Java動(dòng)態(tài)特性是其面向?qū)ο笤O(shè)計(jì)方法的擴(kuò)展,允許程序動(dòng)態(tài)地裝入

運(yùn)行過程中所需的類,這是C++進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)所無法實(shí)現(xiàn)的。C++程序設(shè)計(jì)過程中,每

當(dāng)在類中增加一個(gè)實(shí)例變量或一種成員函數(shù)后,引用該類的所有子類都必須重新編譯,否則將導(dǎo)

致程序出錯(cuò)。Java采取如下措施來解決此類問題:

(1)Java編譯器不是將對(duì)實(shí)例變量和成員函數(shù)的引用編譯為數(shù)值引用,而是將符號(hào)引用信

息在字節(jié)碼中保存后傳遞給解釋器,再由解釋器在完成動(dòng)態(tài)連接類后,將符號(hào)引用信息轉(zhuǎn)換為數(shù)

據(jù)偏移量。存儲(chǔ)器生成的對(duì)象不在編譯過程中決定,而是延遲到運(yùn)行時(shí)由解釋器確定。這樣,對(duì)

類中變量和方法進(jìn)行更新時(shí)就不至于影響現(xiàn)存的代碼。解釋執(zhí)行字節(jié)碼時(shí),這種符號(hào)信息的查找

和轉(zhuǎn)換過程僅在一個(gè)新的名字出現(xiàn)時(shí)才進(jìn)行一次,隨后代碼便可以全速執(zhí)行。

(2)在運(yùn)行時(shí)確定引用的好處是可以使用已被更新的類,而不必?fù)?dān)心會(huì)影響原有的代碼。

如果程序連接了網(wǎng)絡(luò)中另一系統(tǒng)的某一類,該類的所有者也可以自由地對(duì)該類進(jìn)行更新,而不會(huì)

使任何引用該類的程序崩潰。

(3)Java還簡化了使用一個(gè)升級(jí)的或全新的程序的方法。如果系統(tǒng)運(yùn)行Java程序時(shí)遇到了

不知如何處理的程序,Java能自動(dòng)下載所需要的功能程序。

第6頁共125頁

Java是一種比C/C++更具動(dòng)態(tài)特性的語言,在設(shè)計(jì)上強(qiáng)調(diào)為運(yùn)行中的運(yùn)算環(huán)境提供動(dòng)態(tài)支持。

Java在運(yùn)行時(shí)為模塊與模塊之間建立連接,并能夠更直接地運(yùn)用面向?qū)ο笤O(shè)計(jì)體系。程序庫可以

自由地增加新方法和實(shí)例變量,而不會(huì)對(duì)它們的用戶產(chǎn)生任何影響。

2.1.3Java的核心技術(shù)與實(shí)現(xiàn)機(jī)制

JavaVirtualMachine(Java虛擬機(jī)),它是,-個(gè)虛構(gòu)出來的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿

真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的,。Java虛擬機(jī)有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器

等,還具有相應(yīng)的指令系統(tǒng)。JVM屏蔽了與具體操作系統(tǒng)平臺(tái)相關(guān)的信息,使得Java程序只需生成

在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行。Java虛擬機(jī)在執(zhí)

行字節(jié)碼時(shí),實(shí)際上最終還是把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。

JVM(Java虛擬機(jī))一種用于計(jì)算設(shè)備的規(guī)范,可用不同的方式(軟件或硬件)加以實(shí)現(xiàn)。編

譯虛擬機(jī)的指令集與編譯微處理器的指令集非常類似。Java虛擬機(jī)包括一套字節(jié)碼指令集、一組

寄存器、一個(gè)棧、一個(gè)垃圾回收堆和一個(gè)存儲(chǔ)方法域。

Java虛擬機(jī)(JVM)是可運(yùn)行Java代碼的假想計(jì)算機(jī)。只要根據(jù)JVM規(guī)格描述將解釋器移植

到特定的計(jì)算機(jī)上,就能保證經(jīng)過編譯的任何Java代碼能夠在該系統(tǒng)上運(yùn)行。

Java虛擬機(jī)是一個(gè)想象中的機(jī)器,在實(shí)際的計(jì)算機(jī)上通過軟件模擬來實(shí)現(xiàn)。Java虛擬機(jī)有自己

想象中的硬件,如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。

2.1.機(jī)種語言的對(duì)比

Java和C++對(duì)比:

Java程序中的每個(gè)變量要么是基本數(shù)據(jù)類型(boolean,char,byte,short,int,long,float,

double),要么是對(duì)對(duì)象的引用。

C++有許多種基本類型,額外還有struct,union,enum,數(shù)組和指針,C++指針可以指向?qū)ο?

也可以不指向?qū)ο蟆?/p>

Java沒有枚舉、聯(lián)合類型,因?yàn)镴ava認(rèn)為沒有必要。將可有可無的語言元素去掉是Java對(duì)

C/C++做出的一大改變,因此,普遍認(rèn)為Java較C++更輕便,更精簡。

Java采用Unicode字符集,C++通常用ASCH字符集。但ASCII是Unicode的子集,對(duì)于習(xí)

慣于ASCH的程序員感覺不到區(qū)別。

Java中的boolean類型不能轉(zhuǎn)換成其他類型,反之亦然。C++最近引進(jìn)了bool類型,代表布

爾類型,整型也作為邏輯判斷。

Java和C#的對(duì)比:

二者都編譯成跨平臺(tái)的、跨語言的代碼,并且代碼只能在一個(gè)受控制的環(huán)境中運(yùn)行,自動(dòng)回

收垃圾內(nèi)存,并且消除了指針(在C#中可以使用指針,不過必須注明unsafe關(guān)鍵字)。

都不需要頭文件,所有的代碼都被“包(package)”限制在某個(gè)范圍內(nèi),并且因?yàn)闆]有頭文件,

所以消除了類定義的循環(huán)依賴所有的類都是從對(duì)象派生并且必須使用New關(guān)鍵字分配內(nèi)存。用

第7頁共125頁

對(duì)象加鎖的方式來支持多線程,都具有接口(interface)的概念。

22第二節(jié)了解java

2.2IJava開發(fā)環(huán)境的安裝與配置

JDK(JavaDevelopmentKit)是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境JRE(Java

RuntimeEnvirnment),一堆Java工具和Java基礎(chǔ)的類庫(rt.jar)。不論什么Java應(yīng)用服務(wù)器實(shí)質(zhì)都

是內(nèi)置了某個(gè)版本的JDK。最主流的JDK是Sun公司發(fā)布的JDK,我們可以在網(wǎng)上卜.載到JDK

程序:hllp:〃/zh_CN/基本的環(huán)境配置如下:

莖統(tǒng)厘性L22*'環(huán)境變量

計(jì)算機(jī)名:硬件高級(jí)系統(tǒng)保護(hù)|遠(yuǎn)程

zmpmqq的用戶變里也)

要進(jìn)行大多數(shù)更改,您必須作為管理員登錄。

變里值

性能

TEMP%USERPROFILE%\AppData\Local\Temp

視覺效果,處理器計(jì)劃,內(nèi)存使用,以及虛擬內(nèi)存IMP%USERPROFILE%\AppData\Local\Temp

用戶配置文件|耐如…|刖?…]IH>余一|

與您登錄有關(guān)的桌面設(shè)置

系統(tǒng)兗里(S)

SS值*

NUNBER_OF_PR...2

啟動(dòng)和故障恢復(fù)

OSWindows_NT

系統(tǒng)啟動(dòng)、系統(tǒng)失敗和調(diào)試信息

〔PathD\PrografliFiles\Jave\jdkl6。1

PATwm___________rnM-m-RAT-CMTIVRS-VRF-

環(huán)填艾里幽二.J

|碓]|取消]應(yīng)用3]

2.22Java程序的編輯、編譯與運(yùn)行

1、編寫源程序2、編譯源程序3、運(yùn)行

MyProgram.javaMyProgram.classJava運(yùn)行平臺(tái)

第8頁共125頁

工作流程

編寫Java應(yīng)用程序非常簡單,一般可以分為下面3個(gè)步驟。

(1)創(chuàng)建Java源程序

Java源程序?般用.java作為擴(kuò)展名,是一個(gè)文本文件,用Java語言編寫,可以用任何文本

編輯器創(chuàng)建與編輯。常用的有記事本、純文本編輯器UltraEdit、Eclipse和NetBeans等開發(fā)工具。

(2)編譯源程序

源文件創(chuàng)建完成之后,就可以使用Java編譯器,即“javac”讀取Java源程序,并將其翻譯

成Java虛擬機(jī)能夠明白的指令集合,以字節(jié)碼的形式保存在文件中。通常,該字節(jié)碼文件以.class

作為擴(kuò)展名。

(3)運(yùn)行class(字節(jié)碼)文件

字節(jié)碼文件生成之后,利用Java解釋器,即“java”讀取字節(jié)碼,取出指令并將其翻譯成計(jì)

算機(jī)能執(zhí)行的代碼,完成運(yùn)行過程。

編寫實(shí)例

下面通過一個(gè)實(shí)例,演示Java程序的開發(fā)流程。打開記事本,輸入下列內(nèi)容。

/?*

*這個(gè)類用于在屏幕上顯示消息

*/

publicclassHello{

/**

*類和應(yīng)用程序的唯一入口點(diǎn)

*?paramargs字符串參數(shù)的數(shù)組

*/

publicstaticvoidmain(String[]args){

/*輸出消息*/

System.out.printin("這是我的第?個(gè)Java程序");

)

)

保存上述代碼為Hello.java。該案例使用了注釋。注釋有3種:文檔注釋,多行注釋,單行

注釋?!?***/”為文檔注釋,主要是對(duì)整個(gè)程序的功能做一個(gè)說明的作用。"/**/”

為多行注釋,主要對(duì)某一個(gè)功能模塊進(jìn)行說明?!啊ā睘閱涡凶⑨?,可以對(duì)某一個(gè)語句注解說明。

關(guān)鍵字class聲明類的定義,可以理解它是一個(gè)類的聲明。整個(gè)類及其所有成員都是在一對(duì)

大括號(hào),即在“{”和“}”之間定義。這對(duì)大括號(hào)標(biāo)志類定義塊的開始和結(jié)束。程序從main()方

法開始執(zhí)行,關(guān)鍵字public是一個(gè)訪問控制符,限制類成員的可見度和作用域。關(guān)鍵字static允

許調(diào)用main。方法,而無須創(chuàng)建類的實(shí)例。關(guān)鍵字void表明main。方法在執(zhí)行時(shí)不返回任何值。

main。方法是所有Java應(yīng)用程序的起始點(diǎn),args[]是String類型的數(shù)組。println()方法通過System.out

顯示作為參數(shù)傳遞給它的字符串。

第9頁共125頁

實(shí)例分析和運(yùn)行

將Hello.java文件保存在F:\Java\l文件夾下。初學(xué)者需要注意下面幾個(gè)方面。

1.源文件的名稱一定要和類的名稱保持一致。

2.源文件的擴(kuò)展名必須為java。

3.Java語言區(qū)分大小寫。在Java程序中,System和system是兩個(gè)不一樣的名稱。

4.空格只能是半角空格符或是Tab字符。

源程序編寫好后,需要打開一個(gè)命令提示符窗口??梢酝ㄟ^單擊【開始】I【所有程序】I【附

件】I【命令提示符】命令打開。也可以通過單擊【開始】I【運(yùn)行】命令,在彈出的對(duì)話框中輸

入“cmd”命令打開。打開命令提示符窗口之后,進(jìn)入到Hello.java文件所保存的目錄下,然后

使用“javac”編譯生成Hello.class字節(jié)碼文件。字節(jié)碼文件生成后,可以使用“java”解釋執(zhí)行

該文件。其情形如圖所示。

圖編譯和執(zhí)行Hello.java

在該窗口中,使用“cd”命令進(jìn)入保存Hello.java源代碼文件的文件夾內(nèi).

在使用“javac”編譯器編譯源代碼文件時(shí),可能會(huì)出現(xiàn)下面幾個(gè)常見問題。

Error:cannotread:Heilo.java

javac工具程序找不到指定的.java文件。需要檢查文件是否存儲(chǔ)在當(dāng)前目錄中,或是文件名

是否錯(cuò)誤。

Hello.java:l:classHelloispublic,shoudbedeclaredinafilenamedHello.java

源文件中類的名稱和源文件名稱不符。需要確定源文件名稱和類名稱是否相同。

Hello.java:3:cannotfindsymbol

源程序文件中某些代碼部分輸入錯(cuò)了,原因可能是沒有注意到字母的大小寫。

Javac不是內(nèi)部或外部命令、可執(zhí)行程序或批量文件

pa山設(shè)置有誤或沒有在path中加入JDK的bin目錄。

如果沒有出現(xiàn)上述所列問題,表明成功編譯了該Java文件。在解釋執(zhí)行.class文件時(shí),可能

會(huì)出現(xiàn)下面幾個(gè)常見問題。

Exceptioninthread"main"java.lang.NoClassDefFoundError

Java工具程序找不到所指定的.class文件,需要確定指定的類是否存儲(chǔ)在當(dāng)前目錄中,名稱

是否正確。

Exceptioninthread"main"java.lang.NoSuchMethodError:main

沒有指定Java程序的入口。Java工具程序指定的類必須有一個(gè)程序入口,即必須包括main

(Stringargs[])這個(gè)方法。

2.2.3JavaIDE的簡單運(yùn)用

如何選擇一個(gè)workspace啟動(dòng)

第10頁共125頁

SelectVorkspaceDirectory0?

Selecttheworkspacedirectorytouse.

日一TOOLS8:)

|±)iQdownload

國0HZGW

l±)?二)Java

JavaProject

囹廣)MicrosoftVisualStudio8

ffiProgram

田1^1ProgramFiles

Z-^.AIL4T71v

文件夾:JavaProject

新建文件夾勉)確定取消

如何創(chuàng)建一個(gè)新工程

第11頁共125頁

如何創(chuàng)建類

第12頁共125頁

如何編輯、運(yùn)行、調(diào)試

運(yùn)行Java應(yīng)用程序:RunfRunAsfJavaApplication

若用外面參數(shù)傳入main方法的args參數(shù),則Run->Run...

若要調(diào)試,則RunfDebug…具體見調(diào)試方法

調(diào)試技巧:

單步調(diào)試按F6,按F8結(jié)束運(yùn)行

鼠標(biāo)移至某一變量,則會(huì)顯示該變量當(dāng)前的值

在Variables的顯示框(若沒出現(xiàn),則選windowfshowviewfVariables)查看各變量的變化情

在window^showviewfExpressions輸入表達(dá)式查看計(jì)算結(jié)果

如何設(shè)置斷點(diǎn)調(diào)試:雙擊需設(shè)置斷點(diǎn)的行的左邊框

第13頁共125頁

HelloWorld.java-u

pul)XlcclassHelloUorId{

inti;

*@paramargs

*/

Hpublicstaticvoidmain(String[]args){

F//TODOAuto-generatedmethodstubCZ3

inti=l;

—HelloWorldh=newHelloWorld();

Lh?i=2;

i=Integer-p^rseTnt(args[0]);

System,out.print-ln(i);

System.out.printIn(h.i);

如何添加外部的類庫

Java-HelloWorld.java-EclipseSDK

FileEditSourceRefactorNavigateSearchProjectRun.YindowKelp

o□

*B??ov?fro*BuildPath

$AddExtern*!Archiv?s

_AAddLibraries

身Refresh

ClozeProject

pareBuildPath.

RunAs

n?bu(As

Tl-

CompareYxth

R?stor?froeLocalMiitorx

PDETog

JavadocDeclaration

第14頁共125頁

如何改變工作目錄

第15頁共125頁

3第二章java語言基礎(chǔ)

3.1第一節(jié)標(biāo)識(shí)符與關(guān)鍵字

標(biāo)識(shí)符

是用戶編程時(shí)使用的名字。我們指定某個(gè)東西、人,都要用到它,他或她的名字;

在數(shù)學(xué)中解方程時(shí),我們也常常用到這樣或那樣的變量名或函數(shù)名。同樣的道理,在

電腦語言中,對(duì)于變量,常量,函數(shù),語句塊也有名字,我們統(tǒng)統(tǒng)稱之為標(biāo)識(shí)符。

關(guān)鍵字

關(guān)鍵字是電腦語言里事先定義的,有特別意義的標(biāo)識(shí)符,有時(shí)又叫保留字。Java

中的常用關(guān)鍵字如下:

數(shù)據(jù)類型:byteshortintlongcharfloatdoublebooleanstring

修飾符:publicprotectedprivateclassextendsinterfaceinportpackage

irrplementssuperthistruefalsestaticfinalnul1

流程控制:forforeachifelseswitchcasebreakcontinue

returntrycatchthrowthrowsfinally

注:以上并非java全部關(guān)鍵字,以后可在學(xué)習(xí)和工作中慢慢體會(huì)新的關(guān)鍵字及

其用法。

3.2第二節(jié)基本數(shù)據(jù)類型

整數(shù)型:byteshort、int>long

浮點(diǎn)型:floatdouble

字符型:char

布爾型:boolean

第16頁共125頁

int:int為整數(shù)類型,在存儲(chǔ)的時(shí)候,用4個(gè)字節(jié)存儲(chǔ),范圍為-2,147,483,648

至1」2,147,483,647,在變量初始化的時(shí)候,int類型的默認(rèn)值為0。

short:short也屬于整數(shù)類型,在存儲(chǔ)的時(shí)候,用2個(gè)字節(jié)存儲(chǔ),范圍為

-32,768到32,767,在變量初始化的時(shí)候,short類型的默認(rèn)值為0,一般情況

下,因?yàn)镴ava本身轉(zhuǎn)型的原因,可以直接寫為0。

long:long也屬于整數(shù)類型,在存儲(chǔ)的時(shí)候,用8個(gè)字節(jié)存儲(chǔ),范圍為

-9,223,372,036,854,775,808至I」9,223,372,036,854,775,807,在變

量初始化的時(shí)候,long類型的默認(rèn)值為0L或0I,也可直接寫為0。

byte:byte同樣屬于整數(shù)類型,在存儲(chǔ)的時(shí)候,用1個(gè)字節(jié)來存儲(chǔ),范圍為-128

到127,在變量初始化的時(shí)候,byte類型的默認(rèn)值也為0。

float:float屬于實(shí)數(shù)類型,在存儲(chǔ)的時(shí)候,用4個(gè)字節(jié)來存儲(chǔ),范圍為32

位IEEEE754單精度范圍,在變量初始化的時(shí)候,float的默認(rèn)值為0.Of或0.0F,

在初始化的時(shí)候可以寫0.0。

double:double同樣屬于實(shí)數(shù)類型,在存儲(chǔ)的時(shí)候,用8個(gè)字節(jié)來存儲(chǔ),范

圍為64位IEEE754雙精度范圍,在變量初始化的時(shí)候,double的默認(rèn)值為0.0。

char:char屬于字符類型,在存儲(chǔ)的時(shí)候用2個(gè)字節(jié)來存儲(chǔ),因?yàn)镴ava本身

的字符集不是用ASCII碼來進(jìn)行存儲(chǔ),是使用的16位Lhicode字符集,它的字符范

圍即是Unicode的字符范圍,在變量初始化的時(shí)候,char類型的默認(rèn)值為

'uOOOO'o

boolean:boolean屬于布爾類型,在存儲(chǔ)的時(shí)候不使用字節(jié),僅僅使用1位

來存儲(chǔ),范圍僅僅為0和1,其字面量為true和false,而boolean變量在初始化

的時(shí)候變量的默認(rèn)值為false。

Java中基本數(shù)據(jù)類型的轉(zhuǎn)型:

Java中的簡單數(shù)據(jù)類型的轉(zhuǎn)換分為兩種:自動(dòng)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換

1)自動(dòng)轉(zhuǎn)換:

當(dāng)一個(gè)較“小”的數(shù)據(jù)和較“大”的數(shù)據(jù)一起運(yùn)算的時(shí)候,系統(tǒng)將自動(dòng)將較“小”

的數(shù)據(jù)轉(zhuǎn)換為較“大”的數(shù)據(jù),再進(jìn)行運(yùn)算。

在方法調(diào)用過程,如果實(shí)際參數(shù)較“小”,而函數(shù)的形參比較“大”的時(shí)候,除

第17頁共125頁

非有匹配的方法,否則會(huì)直接使用較“大”的形參函數(shù)進(jìn)行調(diào)用。

2)強(qiáng)制轉(zhuǎn)換:

將“大”數(shù)據(jù)轉(zhuǎn)換為“小”數(shù)據(jù)時(shí),可以使用強(qiáng)制類型轉(zhuǎn)換,在強(qiáng)制類型轉(zhuǎn)換的

時(shí)候必須使用下邊這種語句:

inta=(int)3.14;

只是在上邊這種類型轉(zhuǎn)換的時(shí)候,有可能會(huì)出現(xiàn)精度損失。

關(guān)于類型的自動(dòng)提升,遵循下邊的規(guī)則:

所有的byte、short,char類型的值將提升為int類型;

如果有一個(gè)操作數(shù)是long類型,計(jì)算結(jié)果是long類型;

如果有一個(gè)操作數(shù)是float類型,計(jì)算結(jié)果是float類型;

如果有一個(gè)操作數(shù)是double類型,計(jì)算結(jié)果是double類型;

自動(dòng)類型轉(zhuǎn)換圖如下:

byte->short(char)->int->long->float->double

如果是強(qiáng)制轉(zhuǎn)換的時(shí)候,就將上邊的圖反過來。

3.3第三節(jié)變量與常量

變量

變量是程序中數(shù)據(jù)的臨時(shí)存放場所。在代碼中可以只使用一個(gè)變量,也可以使用

多個(gè)變量,變量中可以存放單詞、數(shù)值、日期以及屬性。聲明并賦值變量的方法如下:

intx=

常量

在一個(gè)變化過程中,此量的數(shù)值始終是不變的,我們稱它為常量。它們可以是不

隨時(shí)間變化的某些量和信息,也可以是表示某一數(shù)值的字符或字符串,常被用來標(biāo)識(shí)、

測(cè)量和比較。在java中我們用final關(guān)鍵字來定義常量如:finaldoublePI=

3.1415;

第18頁共125頁

例題:使用變量存儲(chǔ)以下信息,并打印輸出

品牌(branQ:愛國者F928

重量(weight):124

電池類型(type):內(nèi)置鋰電池

價(jià)格(pricq):499

publicclassMP3{

publicstaticvoidmain(String[]args){

Stringbrand="愛國者F928";//品牌

doubleweight=12.4;//幣;量

Stringtype=”內(nèi)置鋰電池”;//型號(hào)

intprice=499;//價(jià)格

System.out.printIn("MP3:");

System.out.printIn(n\t?'+brand);

System,out.printIn("fiM:\t'*+weight);

System,out.printIn("\t"+type);

System,out.printIn("價(jià)格:\tn+price);

)

)

3.4第四節(jié)運(yùn)算符與表達(dá)式

3.41賦值

賦值

將某一數(shù)值賦給某個(gè)變量的過程,稱為賦值。在計(jì)算機(jī)程序設(shè)計(jì)語言中,由一定

的賦值語句去實(shí)現(xiàn)變量的賦值。

例如:

inti;

i=4;〃把4賦值給變量1

3.4運(yùn)算符

運(yùn)算符

運(yùn)算符用于執(zhí)行程序代碼運(yùn)算,會(huì)針對(duì)一個(gè)以上操作數(shù)項(xiàng)目來進(jìn)行運(yùn)算。例如:

2B,其操作數(shù)是2和3,而運(yùn)算符則是‘+'。

賦值運(yùn)算符

第19頁共125頁

賦值運(yùn)算符用的是美算符。它的意思是“算出書?右邊的值,然后拷貝到胄的

左邊”。值可以使任何常量、變量或者是能產(chǎn)生值的表達(dá)式。例如,你可以將常量賦

值給變量:a工但是你不能將值賦給常量(上到)。

數(shù)學(xué)運(yùn)算符

在絕大數(shù)編程語言里邊,基本的數(shù)學(xué)運(yùn)算符都是相同的:加(夕、減(7、乘(*)、

除(/、取模(沱會(huì)返回整數(shù)相除后余數(shù))。整數(shù)相除會(huì)把運(yùn)算結(jié)果的小數(shù)點(diǎn)后邊全

部截掉,而不是四舍五入。Java也有可以同時(shí)進(jìn)行運(yùn)算與賦值的簡寫符號(hào)。它用運(yùn)

算符加一個(gè)等號(hào)來表示,在java中,這種表示方法能一致地用于所有運(yùn)算符(只要

是有意義就行了)。比如,你要為變量a加4,然后再賦給a,就寫al

作是變量在參與其他運(yùn)算之前先將自己加1后,再用新的值參與其他運(yùn)算,而

a4H是先用原來的值參與其他運(yùn)算后,再將自己加lo如:是a先自增,a自己

變了后才賦值給b,而先賦值給b,a后自增。

關(guān)系運(yùn)算符

關(guān)系運(yùn)算符會(huì)產(chǎn)生boolean類型的結(jié)果。它們會(huì)判斷操作數(shù)的值的大小關(guān)系。如

果這種關(guān)系為真,則關(guān)系表達(dá)式返回true,如果這個(gè)關(guān)系為假,則返回false,關(guān)系

運(yùn)算符有小于Q、大于⑶、小于等于④、大于等于2、相等㈡及不等(今。

所有的內(nèi)置數(shù)據(jù)類型都能比較相等或不等,但是對(duì)于boolean類型,除了相等和不等

之外,其它的比較式?jīng)]有意義的。

例題:

1、根據(jù)天數(shù)(40計(jì)算周數(shù)和剩余的天數(shù)

publicclassCalcDays{

publicstaticvoidmain(String[]args){

intdays=46;//天數(shù)

intweek=days/7;//星期

intleftDay=days%7;//剩余的天數(shù)

System.out.printIn(days+“天等于”+week+“周零"+leftDay+“天”);

2,已知圓的半徑radium1.5,求其面積

publicclassArea(

publicstaticvoidmain(String[]args){

第20頁共125頁

doublepi=3.14159;//圓周率

doubleradius=1.5;//半徑

doub1earea=pi*radius*radius;//計(jì)算圓面積

System.out.printin("圓的半徑是:"+radius);

System.out:.printin("圓的面積是:”+area);

3.4達(dá)式

表達(dá)式

將同類型的數(shù)據(jù)(如常量、變量、函數(shù)等),用運(yùn)算符號(hào)按一定的規(guī)則連接起來

的、有意義的式子稱為表達(dá)式。

3.5第五節(jié)流程控制

3.5.1流程控制結(jié)構(gòu)

if-else

也許是最基本的程序流程控制語句。else是可選的,所以if實(shí)際上有兩種用法:

if(Boolean-expression)

Statement

或者:

if(Boolean-expression)

statement

else

statment

第21頁共125頁

條件判斷必須要產(chǎn)生一個(gè)boolean結(jié)果。“"statement”即可以使以分號(hào)標(biāo)識(shí)結(jié)

束的簡單語句,也可以是花括號(hào)括起來的復(fù)合語句。只要用到“statement”,就表示

它既可以是簡單語句,也可以是復(fù)合語句。

If語句例題:

1、張三買了一筐雞蛋,如果壞蛋少于5個(gè),他就吃掉,否則他就去退貨

publicclassEgg{

publicstaticvoidmain(String[]args){

intbadEgg=10;//壞蛋數(shù)目

if(badEgg<5){

溫馨提示

  • 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)論