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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

南天金融軟件定制班教材

第一部分Java基礎

培訓資源部

2010年7月

目錄

1概述1

2第一章小語言概述2

2.1第一節(jié)程序設計語言2

2.2第二節(jié)了解JAA8

3第二章JMA語言基礎16

3.1第一節(jié)標識符與關鍵字16

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

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

3.4第四節(jié)運算符與表達式19

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

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

4第三章面向對象技術36

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

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

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

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

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

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

47第七節(jié)接口52

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

49第九節(jié)包56

5第四章以購高級特性60

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

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

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

6第五章異常處理79

6.1第一節(jié)萬?異常處理的基礎知識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é)流的高級操作104

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

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

a2第二節(jié)程112

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

1概述

JAVA語言是近年得到迅速推廣應用的一種計算機語言。JAVA語言功能豐富,表達能力強,

使用靈活方便,應用廣,目標程序可移植性強,具有高級語言的優(yōu)點,同時還具備跨平臺的優(yōu)點.

本課程是計算機類工科各專業(yè)學習的一門高級語言程序設計課程,具有一般較強的計算機編程知

識即可學習本課程。通過木課程的學習,學生應掌握JAVA語言的基本語法,還應掌握面向對象

程序設計的基本思想,基本概念和基本方法,并能運用所學的知識和技能對一般問題進行分析和

程序設計,編制出高效的JAVA語言應用程序。

第1頁共125頁

2第一章java語言概述

21第一節(jié)程序設計語言

機器語言

計算機所能識別的語言只有機器語言,即由o和1構成的代碼。但通常人們編程時,不采用

機器語言,因為它非常難于記憶和識別。

匯編語言

匯編語言的實質和機器語言是相同的,都是直接對硬件操作,只不過指令采用了英文縮寫的

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

程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程

中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而

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

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

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

高級語言

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

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

解釋類

執(zhí)行方式類似于我們日常生活中的“同聲翻譯”,應用程序源代碼一邊由相應語言的解釋器

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

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

編譯類

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

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

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

第2頁共125頁

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

2.1.Uava歷史

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

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

展過程。

Java產生背景

1991年4月,Sun公司的JamesGosling領導的綠色計劃(GreenProject)開始著力發(fā)展一種

分布式系統(tǒng)結構,使其能夠在各種消費性電子產品上運行。Green項目組的成員一開始使用C++

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

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

一種新的語言來替代它。

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

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

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

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

Java產生

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

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

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

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

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

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

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

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

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

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

一JavaSoft部。這個部分主要負責開發(fā)、銷售并支持基于Java技術的產品。

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

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

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

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

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

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

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

器是編譯一條,運行完后再將其扔掉,而JIT會將經常用到的指令保存在內容中,在下次調用時

第3頁共125頁

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

21.Java的特點

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

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

dynamiclanguageJava是?種簡單的、面向對象的、分布式的、解釋執(zhí)行的、健壯的、安全的、

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

Java的如下幾個特點:

簡單

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

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

了豐富的基礎類庫,具有C或C++編程經驗的程序員都會對這些基礎類庫很熟悉,無需經過長時

間訓練即可掌握它。

面向對象

Java是一種純面向對象的語言。Java程序面向對象的設計思路不同于C語言基于過程的程序

設計思路。面向對象程序設計,具備更好地模擬現(xiàn)實世界環(huán)境的能力和可重用性。它將待解決的

現(xiàn)實問題轉換成一組分離的程序對象,這些對象彼此之間可以進行交互。一個對象包含了對應實

體應有的信息以及訪問和改變這些信息的方法。通過這種設計方式,所設計出來的程序更易于改

進、擴展、維護和重用。Java語言提供類、接口和繼承等原語。Java語言只支持類之間的單繼承,

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

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

分布式

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

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

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

處理。止匕外,Java類庫的運用,大大減輕了網(wǎng)絡傳輸?shù)呢摵伞ava類庫包含了支持HTTP和FTP

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

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

高效解釋執(zhí)行

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

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

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

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

第4頁共125頁

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

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

實時編譯器(Just-In-Time,JIT)會將字節(jié)碼譯成目標平臺對應的機器語言的指令代碼。

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

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

行。這是因為JVM能夠直接使用JIT編譯技術將經過精心設計的字節(jié)碼轉換成高性能的本機代碼。

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

臺”對Java來說已不再矛盾。

健壯性

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

敗的主要原因:內存管理錯誤和誤操作引起的異?;蜻\行時異常。

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

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

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

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

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

收集器,可自動收集閑置對象占用的內存。Java提供面向對象的異常處理機制來解決異常處理的

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

安全

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

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

全性設計以及嚴格的編譯檢查、運行檢查和網(wǎng)絡接口級的安全檢查。

Java語言是強類型語言,每種類型都要求嚴格定義。首先,每個變量、表達式都有類型。其

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

查。有些語言沒有自動進行數(shù)據(jù)類型相容性檢查,或對沖突的類型進行轉換的機制。Java編譯器

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

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

轉換,對內存訪問進行了嚴格的限制。Java編譯器在編輯期間并不分配內存,而是推遲到運行時

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

提供了4級安全保障機制:字節(jié)碼校驗器、類裝載器、運行時內存布局和文件訪問限制。在網(wǎng)絡

接口級,用戶可按自己的需要來設置網(wǎng)絡訪問權限。

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

碼的源主機及該代碼的完整性。

結構中立

Java是結構中立的語言。Java的設計目標是要支持網(wǎng)絡應用。一般而言,網(wǎng)絡是由許多不同

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

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

第5頁共125頁

任何安裝了Java虛擬機的平臺上運行。

可移植

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

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

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

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

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

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

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

補碼運算和單/雙精度浮點運算。

高效率

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

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

時直接將目標代碼翻譯成機器指令。使用JVM1秒鐘內可調用300000個過程,與C/C++不相上

下。

多線程

Java是支持多線程的語言。多線程是一種應用程序設計方法。線程是從大進程里分出來的、

小的、獨立的進程,使得在一個程序里可同時執(zhí)行多個小任務。多線程帶來的好處是具有更好的

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

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

動態(tài)

Java語言具有動態(tài)特性。Java動態(tài)特性是其面向對象設計方法的擴展,允許程序動態(tài)地裝入

運行過程中所需的類,這是C++進行面向對象程序設計所無法實現(xiàn)的。C++程序設計過程中,每

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

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

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

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

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

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

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

(2)在運行時確定引用的好處是可以使用已被更新的類,而不必擔心會影響原有的代碼。

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

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

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

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

第6頁共125頁

Java是一種比C/C++更具動態(tài)特性的語言,在設計上強調為運行中的運算環(huán)境提供動態(tài)支持。

Java在運行時為模塊與模塊之間建立連接,并能夠更直接地運用面向對象設計體系。程序庫可以

自由地增加新方法和實例變量,而不會對它們的用戶產生任何影響。

2.1.3Java的核心技術與實現(xiàn)機制

JavaVirtualMachine(Java虛擬機),它是,-個虛構出來的計算機,是通過在實際的計算機上仿

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

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

在Java虛擬機上運行的目標代碼(字節(jié)碼),就可以在多種平臺上不加修改地運行。Java虛擬機在執(zhí)

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

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

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

寄存器、一個棧、一個垃圾回收堆和一個存儲方法域。

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

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

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

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

2.1.機種語言的對比

Java和C++對比:

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

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

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

也可以不指向對象。

Java沒有枚舉、聯(lián)合類型,因為Java認為沒有必要。將可有可無的語言元素去掉是Java對

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

Java采用Unicode字符集,C++通常用ASCH字符集。但ASCII是Unicode的子集,對于習

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

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

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

Java和C#的對比:

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

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

都不需要頭文件,所有的代碼都被“包(package)”限制在某個范圍內,并且因為沒有頭文件,

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

第7頁共125頁

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

22第二節(jié)了解java

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

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

RuntimeEnvirnment),一堆Java工具和Java基礎的類庫(rt.jar)。不論什么Java應用服務器實質都

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

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

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

計算機名:硬件高級系統(tǒng)保護|遠程

zmpmqq的用戶變里也)

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

變里值

性能

TEMP%USERPROFILE%\AppData\Local\Temp

視覺效果,處理器計劃,內存使用,以及虛擬內存IMP%USERPROFILE%\AppData\Local\Temp

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

與您登錄有關的桌面設置

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

SS值*

NUNBER_OF_PR...2

啟動和故障恢復

OSWindows_NT

系統(tǒng)啟動、系統(tǒng)失敗和調試信息

〔PathD\PrografliFiles\Jave\jdkl6。1

PATwm___________rnM-m-RAT-CMTIVRS-VRF-

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

|碓]|取消]應用3]

2.22Java程序的編輯、編譯與運行

1、編寫源程序2、編譯源程序3、運行

MyProgram.javaMyProgram.classJava運行平臺

第8頁共125頁

工作流程

編寫Java應用程序非常簡單,一般可以分為下面3個步驟。

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

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

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

(2)編譯源程序

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

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

作為擴展名。

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

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

算機能執(zhí)行的代碼,完成運行過程。

編寫實例

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

/?*

*這個類用于在屏幕上顯示消息

*/

publicclassHello{

/**

*類和應用程序的唯一入口點

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

*/

publicstaticvoidmain(String[]args){

/*輸出消息*/

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

)

)

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

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

為多行注釋,主要對某一個功能模塊進行說明。“〃”為單行注釋,可以對某一個語句注解說明。

關鍵字class聲明類的定義,可以理解它是一個類的聲明。整個類及其所有成員都是在一對

大括號,即在“{”和“}”之間定義。這對大括號標志類定義塊的開始和結束。程序從main()方

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

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

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

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

第9頁共125頁

實例分析和運行

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

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

2.源文件的擴展名必須為java。

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

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

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

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

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

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

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

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

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

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

Error:cannotread:Heilo.java

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

是否錯誤。

Hello.java:l:classHelloispublic,shoudbedeclaredinafilenamedHello.java

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

Hello.java:3:cannotfindsymbol

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

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

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

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

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

Exceptioninthread"main"java.lang.NoClassDefFoundError

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

是否正確。

Exceptioninthread"main"java.lang.NoSuchMethodError:main

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

(Stringargs[])這個方法。

2.2.3JavaIDE的簡單運用

如何選擇一個workspace啟動

第10頁共125頁

SelectVorkspaceDirectory0?

Selecttheworkspacedirectorytouse.

日一TOOLS8:)

|±)iQdownload

國0HZGW

l±)?二)Java

JavaProject

囹廣)MicrosoftVisualStudio8

ffiProgram

田1^1ProgramFiles

Z-^.AIL4T71v

文件夾:JavaProject

新建文件夾勉)確定取消

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

第11頁共125頁

如何創(chuàng)建類

第12頁共125頁

如何編輯、運行、調試

運行Java應用程序:RunfRunAsfJavaApplication

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

若要調試,則RunfDebug…具體見調試方法

調試技巧:

單步調試按F6,按F8結束運行

鼠標移至某一變量,則會顯示該變量當前的值

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

在window^showviewfExpressions輸入表達式查看計算結果

如何設置斷點調試:雙擊需設置斷點的行的左邊框

第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語言基礎

3.1第一節(jié)標識符與關鍵字

標識符

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

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

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

關鍵字

關鍵字是電腦語言里事先定義的,有特別意義的標識符,有時又叫保留字。Java

中的常用關鍵字如下:

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

修飾符:publicprotectedprivateclassextendsinterfaceinportpackage

irrplementssuperthistruefalsestaticfinalnul1

流程控制:forforeachifelseswitchcasebreakcontinue

returntrycatchthrowthrowsfinally

注:以上并非java全部關鍵字,以后可在學習和工作中慢慢體會新的關鍵字及

其用法。

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

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

浮點型:floatdouble

字符型:char

布爾型:boolean

第16頁共125頁

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

至1」2,147,483,647,在變量初始化的時候,int類型的默認值為0。

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

-32,768到32,767,在變量初始化的時候,short類型的默認值為0,一般情況

下,因為Java本身轉型的原因,可以直接寫為0。

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

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

量初始化的時候,long類型的默認值為0L或0I,也可直接寫為0。

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

到127,在變量初始化的時候,byte類型的默認值也為0。

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

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

在初始化的時候可以寫0.0。

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

圍為64位IEEE754雙精度范圍,在變量初始化的時候,double的默認值為0.0。

char:char屬于字符類型,在存儲的時候用2個字節(jié)來存儲,因為Java本身

的字符集不是用ASCII碼來進行存儲,是使用的16位Lhicode字符集,它的字符范

圍即是Unicode的字符范圍,在變量初始化的時候,char類型的默認值為

'uOOOO'o

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

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

的時候變量的默認值為false。

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

Java中的簡單數(shù)據(jù)類型的轉換分為兩種:自動轉換和強制轉換

1)自動轉換:

當一個較“小”的數(shù)據(jù)和較“大”的數(shù)據(jù)一起運算的時候,系統(tǒng)將自動將較“小”

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

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

第17頁共125頁

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

2)強制轉換:

將“大”數(shù)據(jù)轉換為“小”數(shù)據(jù)時,可以使用強制類型轉換,在強制類型轉換的

時候必須使用下邊這種語句:

inta=(int)3.14;

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

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

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

如果有一個操作數(shù)是long類型,計算結果是long類型;

如果有一個操作數(shù)是float類型,計算結果是float類型;

如果有一個操作數(shù)是double類型,計算結果是double類型;

自動類型轉換圖如下:

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

如果是強制轉換的時候,就將上邊的圖反過來。

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

變量

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

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

intx=

常量

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

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

測量和比較。在java中我們用final關鍵字來定義常量如:finaldoublePI=

3.1415;

第18頁共125頁

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

品牌(branQ:愛國者F928

重量(weight):124

電池類型(type):內置鋰電池

價格(pricq):499

publicclassMP3{

publicstaticvoidmain(String[]args){

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

doubleweight=12.4;//幣;量

Stringtype=”內置鋰電池”;//型號

intprice=499;//價格

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

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

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

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

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

)

)

3.4第四節(jié)運算符與表達式

3.41賦值

賦值

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

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

例如:

inti;

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

3.4運算符

運算符

運算符用于執(zhí)行程序代碼運算,會針對一個以上操作數(shù)項目來進行運算。例如:

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

賦值運算符

第19頁共125頁

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

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

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

數(shù)學運算符

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

除(/、取模(沱會返回整數(shù)相除后余數(shù))。整數(shù)相除會把運算結果的小數(shù)點后邊全

部截掉,而不是四舍五入。Java也有可以同時進行運算與賦值的簡寫符號。它用運

算符加一個等號來表示,在java中,這種表示方法能一致地用于所有運算符(只要

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

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

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

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

關系運算符

關系運算符會產生boolean類型的結果。它們會判斷操作數(shù)的值的大小關系。如

果這種關系為真,則關系表達式返回true,如果這個關系為假,則返回false,關系

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

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

之外,其它的比較式沒有意義的。

例題:

1、根據(jù)天數(shù)(40計算周數(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;//計算圓面積

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

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

3.4達式

表達式

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

的、有意義的式子稱為表達式。

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

3.5.1流程控制結構

if-else

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

if(Boolean-expression)

Statement

或者:

if(Boolean-expression)

statement

else

statment

第21頁共125頁

條件判斷必須要產生一個boolean結果。“"statement”即可以使以分號標識結

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

它既可以是簡單語句,也可以是復合語句。

If語句例題:

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

publicclassEgg{

publicstaticvoidmain(String[]args){

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

if(badEgg<5){

溫馨提示

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

最新文檔

評論

0/150

提交評論