【正文】
經(jīng)常與邏輯運算符一起使用。出于這一原因,我們這里對這兩種運算符一起進行討論。 位運算符 位運算符主要用來對操作數(shù)是二進制的位進行運算。按位運算表示按每個二進制位( bit)進行計算,其運算數(shù)是整數(shù)類型,包括 long, int,short, char和 byte,運算結(jié)果為一個整數(shù)。按位運算的目的是對數(shù)據(jù)中 每一個二進制位進行檢測、移位、按位加等操作。 賦值運算符和條件運算符 Java中賦值運算符即是一個等號( =),它是雙目運算符,左邊的操作數(shù)必須是變量,右邊的操作數(shù)是表達式。它將等號右邊表達式的值賦值給左邊的變量。 基本賦值運算符的使用形式是: 變量中 = 表達式 擴展運算符 擴展運算符都是一個雙目運算符和一個等號連在一起組成(注意它們之間不能用空格隔開)。它包括 +=、 =、 *=、 /=、 %=等類似運算符。 其他運算符 除以上常用的運算符外, Java還包括一些特定環(huán)境下運用的運算符。這些運算符包括分量運算符“ .”,實例運算符“ instanceof”,內(nèi)存分配運算符“ new”,強制類型轉(zhuǎn)換運算符“(類型)”,方法調(diào)用運算符“()”,取數(shù)組元素運算符“ []”。 運算符優(yōu)先級 表達式的運算次序取決于表達式中各種運算符的優(yōu)先級。優(yōu)先級高的先運算,優(yōu)先級低的后運算,另外還可用括號“()”改變表達式的運算次序。 32 第 3章 程序控制語句 本章將會詳細介紹控制程序執(zhí)行流程的語句。程序控制語句分 3類:選擇(Selection)語句,包括 If和 Switch語句;迭代( Iteration)語句,包括 For、 While和 DoWhile 循環(huán);跳轉(zhuǎn)( Jump)語句:包括 Break, Continue和 Return。本書將在后面討論 Return語句,還會對其他控制語句進行深入討論,包括讀者已經(jīng)大致了解的 If和 For語句。 33 本章學(xué)習(xí)要點: ? IF語句 ? Switch語句 ? 循環(huán)語句 ? Break、 Continue和 Return語句 34 選擇語句 程序在執(zhí)行的過程中會出現(xiàn)根據(jù)條件來選擇執(zhí)行程序分支的情況。這個問題的解決方法也就是本節(jié)將要講解的選擇類語句,包括 If、If…Else 、 Switch和 If的嵌套語句,首先介紹簡單的 If語句。 35 簡單的 If 語句 IfElse語句 If嵌套語句 Switch語句 36 循環(huán)語句 通過創(chuàng)建循環(huán)( loop)結(jié)構(gòu),可以在某些條件繼續(xù)時,重復(fù)執(zhí)行一段代碼。這使編程工作變的很有價值。 Java支持各種功能強大的循環(huán)結(jié)構(gòu),包括 while循環(huán)、 for循環(huán)、 dowhile循環(huán),如果你對C、 C++、 C#等比較熟悉的話,那么這一節(jié)將是很容易理解的,即使你沒有編程語言的基礎(chǔ),也不會太難,下面首先學(xué)習(xí) while循環(huán)語句。 37 While循環(huán)語句 DoWhile循環(huán)語句 For循環(huán)語句 38 與程序有關(guān)的其他語句 除了選擇語句、循環(huán)語句外,還有一些語句來完善程序執(zhí)行流的控制與執(zhí)行的跳轉(zhuǎn)語句,跳轉(zhuǎn)語句包括強制性退出循環(huán)的 break語句、強制循環(huán)迭代的 continue語句、函數(shù)返回值的 return語句。下面先介紹能夠?qū)崿F(xiàn)強制性退出循環(huán)的 break語句。 Break語句 在 Java中, break語句有三種作用,在 switch語句中終止一個語句序列;退出一個循環(huán);實現(xiàn) goto跳轉(zhuǎn)的作用。第一種我們在 switch語句中已經(jīng)介紹過了,下邊就后兩種進行解釋。 Continue語句 有時候我們需要提早開始一個新的循環(huán),也就是說,達到一定的條件后,你不想要繼續(xù)執(zhí)行這次循環(huán)所剩下的語句,想要繼續(xù)運行循環(huán)。在 for循環(huán)中,continue語句可以直接跳到 for循環(huán)控制語句內(nèi)進行處理,如果循環(huán)變量遞加后還符合條件表達式那么繼續(xù)執(zhí)行。在while和 do while循環(huán)中, continue語句直接將控制權(quán)交給控制循環(huán)的條件表達式。 Return語句 Return語句能夠從一個方法返回,把控制權(quán)交給調(diào)用它的語句,因此把它歸類為跳轉(zhuǎn)語句。 return語句有兩種格式:“ return expression。”和“ return。”。 Return expression語句是返回一個值給調(diào)用該方法的語句, expression是要返回的數(shù)值,它的數(shù)據(jù)類型必須同方法聲明中的返回值類型一致,可以使用強制類型轉(zhuǎn)換來使類型一致。 42 第 4章 數(shù)組 數(shù)組是用一個共有名稱引用相同類型變量的集合。在Java中,雖然最常用的數(shù)組是一維數(shù)組,但是多維數(shù)組應(yīng)用也很普遍。數(shù)組用途廣泛,因為它們提供了一種把相關(guān)變量集合在一起的便利方法。例如,可以使用一個數(shù)組存儲一個月當(dāng)中每天的最高溫度、股票價格的平均值或是圖書館藏書的清單。 數(shù)組的主要優(yōu)勢在于它用一種可以輕松操作數(shù)據(jù)的方法把數(shù)據(jù)組織起來。例如,如果有一個存儲每門課成績情況的數(shù)組,那么通過遍歷數(shù)組,可以輕松地計算出每門課的平均分?jǐn)?shù)。而且,按照這種方法組織數(shù)據(jù)的數(shù)組可以方便地進行排序操作。 43 本章學(xué)習(xí)要點: ? 一維數(shù)組 ? 多維和不規(guī)則數(shù)組 ? 搜索和排序數(shù)組 44 一維數(shù)組 一維數(shù)組是數(shù)組中最簡單的數(shù)組,但是由它不難擴展到多維,達到舉一反三、觸類旁通的效果。下面將對一維數(shù)組進行詳細的介紹。 45 聲明數(shù)組和創(chuàng)建數(shù)組 一維數(shù)組初始化及元素引用 46 多維數(shù)組 既然有一維數(shù)組,那么也將會有二維、三維,依此類推以及三維以上。盡管一維數(shù)組是程序設(shè)計中最常用的數(shù)組,但是多維數(shù)組(二維及二維以上的數(shù)組)也比較常用。在 Java中,多維數(shù)組是數(shù)組的數(shù)組。可以聯(lián)系到數(shù)學(xué)中的坐標(biāo)系,比如二維坐標(biāo)由兩個一維坐標(biāo)組成,三維坐標(biāo)由三個一維的組成。還有其它的能上升到集合概念的事物都可以用數(shù)組來方便的表示。 47 聲明數(shù)組和創(chuàng)建數(shù)組 初始化數(shù)組 數(shù)組程序舉例 48 不規(guī)則數(shù)組 當(dāng)為多維數(shù)組分配內(nèi)存時,只需要為第一維(最左邊的一維)指定大小和分配內(nèi)存,而其余的可以單獨分配。例如,下面的代碼就在聲明table時為它的第一維分配了內(nèi)存,而它的第二維是手動分配內(nèi)存的。 搜索數(shù)組 搜索數(shù)組是在數(shù)組中尋找特定元素的過程。例如,尋找一個確定的分?jǐn)?shù)是否包含在一列分?jǐn)?shù)中。在計算機程序設(shè)計中,搜索是一個普通的任務(wù)。有許多致力于搜索的算法和數(shù)據(jù)結(jié)構(gòu)。在這一章我們講解搜索的一種:線性搜索。 排序數(shù)組 與搜索數(shù)組一樣,在計算機編程當(dāng)中排序和搜索一樣用的十分普遍。正如數(shù)據(jù)結(jié)構(gòu)的所講的,有快速排序法、基數(shù)排序法、冒泡排序法、選擇排序等。 51 選擇排序 冒泡排序 快速排序 52 第 5章 類、對象和方法 在前面的章節(jié),我們學(xué)習(xí)了如何使用基本的數(shù)據(jù)類型、控制語句和數(shù)組來編寫簡單的 Java應(yīng)用程序。所有這些在傳統(tǒng)的面向過程編程中都具有的。但是, Java做為一種完全面向?qū)ο蟮某绦蛟O(shè)計語言,類自然就成了 Java的精華。類是整個 Java語言的基礎(chǔ),因為類定義了對象的本質(zhì)。在類中定義了數(shù)據(jù)和操作這些數(shù)據(jù)的代碼。因為類、對象、方法是 Java的基礎(chǔ),所以本章要介紹這些內(nèi)容。對這些功能有了基本的認(rèn)識才能編寫出更復(fù)雜、功能更強大的程序,對 Java的某些關(guān)鍵元素的深入探討將在后面的若干章中進行。 53 本章學(xué)習(xí)要點: ? 了解類的基礎(chǔ)知識 ? 了解如何創(chuàng)建對象 ? 理解如何向引用變量賦值 ? 創(chuàng)建方法,返回值,并且使用參數(shù) ? 使用 Return關(guān)鍵字返回值 ? 使用構(gòu)造函數(shù) ? 理解 new ? Java中的訪問控制 ? 理解垃圾回收 ? 使用 this關(guān)鍵字 ? 使用對象數(shù)組 54 . Java類 所有的 Java程序都是基于類的。類是 Java中的一種重要的復(fù)合數(shù)據(jù)類型,是組成 Java程序的基本要素。它指定了數(shù)據(jù)以及對數(shù)據(jù)的操作代碼。當(dāng)創(chuàng)建一個新的類,也就意味著創(chuàng)建了一種新的數(shù)據(jù)類型。實例化一個類,就得到該類的一個對象。這樣,類就是對象的模板,而對象就是類的一個實例。 55 類的基本形式 類的定義 56 . 創(chuàng)建對象 通常創(chuàng)建一個類的對象需要兩個步驟:首先聲明一個某類類型的變量;然后使用 new關(guān)鍵字為一個對象分配內(nèi)存空間,并將對內(nèi)存空間的一個引用保存到變量中。 n u l lS t u d e n t a S t u d e n t 。 a S t u d e n t = n e wS t u d e n t ( )s t r N a m ei n t A g eb l S e x創(chuàng)建 Student類型對象 對象引用變量 在一個賦值運算中,對象引用變量與簡單類型變量,如 int變量的工作方式不同。當(dāng)把一個簡單類型的變量值賦給另一個變量時,情況很簡單。等號左邊的變量接收右邊變量值。當(dāng)把對象賦給其它變量時,情況就顯得有些復(fù)雜,因為您在改變引用變量所引用的對象。這可能導(dǎo)致出現(xiàn)意外的結(jié)果。 59 方法 添加方法 調(diào)用對象的方法 將對象傳遞給方法 60 構(gòu)造函數(shù)和垃圾回收 在一類中,除了上面介紹的方法外,類還具有兩個特殊的方法 ——構(gòu)造方法和 finalize( )方法。其中:當(dāng)創(chuàng)建一個類的對象時, Java會自動調(diào)用該類的構(gòu)造函數(shù); finalize( )方法則會在銷毀一個對象時被調(diào)用。 構(gòu)造函數(shù) 構(gòu)造函數(shù)具有與類完全相同的名稱。通常,構(gòu)造函數(shù)用于為類中的變量賦初值。一旦為某個類定義了構(gòu)造函數(shù),那么在創(chuàng)建對象時,構(gòu)造函數(shù)將立即被調(diào)用。無論您是否定義構(gòu)造函數(shù),所有的類都有構(gòu)造函數(shù),因為 Java自動提供了一個默認(rèn)的構(gòu)造函數(shù)來初始化所有的成員變量為 0。當(dāng)然,一旦定義了自己的構(gòu)造函數(shù), Java就不會再使用默認(rèn)構(gòu)造函數(shù)了。 垃圾回收 如前面所介紹,使用 new運算符可以把空閑內(nèi)存空間分配給對象。但是內(nèi)存不是無限的,而空閑內(nèi)存也是可以耗盡的。因此, new可能會因為沒有足夠的空閑空間來創(chuàng)建對象而失敗。因此,當(dāng)不再需要一個對象時,就應(yīng)該釋放該對象所占用的內(nèi)存,以使內(nèi)存用于后面的分配。在許多程序設(shè)計語言中,釋放已經(jīng)分配的內(nèi)存是手動處理的。例如,在 C++中,需要使用 delete運算符來釋放分配的內(nèi)存。然而, Java使用一種不同的,更方便的方法:垃圾回收。 63 new運算符 類成員的訪問控制 共享變量、常量和靜態(tài)方法 n u m o f S t u d e n t = 2s tr N a m e = ” 李 可 ” 。i n t A g e = 2 0 。b l S e x = f a l s e 。s tr N a m e = ” 王 剛 ” 。i n t A g e = 2 1 。b l S e x = t r u e 。內(nèi) 存方 法對 象 2對 象 1實 例 化實 例 化實 例 變 量實 例 變 量共 享 變 量共 享 變 量方 法s t r N a m e 。i n t A g e 。b l S e x 。n u m o f S t u d e n t類 的 方 法 this關(guān)鍵字 有時需要在一個方法中引用一個類的隱藏變量。例如,類的實例變量名與一個方法中參數(shù)名相同,則參數(shù)就隱藏了實例變量名。在這種情況下,為了訪問隱藏的實例變量,你需要在方法中使用引用對象或類名稱。隱藏的靜態(tài)變量可以簡單地通過使用。隱藏的實例變量可以通過使有關(guān)鍵字 this訪問它。為理解關(guān)鍵字 this,請看下面的示例,下面的例子是另一個版本的Circle程序。 對象數(shù)組 c i r c l e A r r a y [ 1 ]c i r c l e A r r a y [ 0 ]c i r c l e A r r a y [ 2 ]c i r c l e A r r a y [