Java語言程序設計與實現(微課版)全套課件_第1頁
Java語言程序設計與實現(微課版)全套課件_第2頁
Java語言程序設計與實現(微課版)全套課件_第3頁
Java語言程序設計與實現(微課版)全套課件_第4頁
Java語言程序設計與實現(微課版)全套課件_第5頁
已閱讀5頁,還剩644頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

項目一Java語言概述

1.1Java的起源

1.2程序設計思想的發展

1.3Java的三大開發體系08三月20251項目一Java語言概述.ppt項目二Java程序設計初識.ppt項目三Java語法基礎.ppt項目四數組.ppt項目五面向對象的程序設計基礎.ppt項目六類的繼承、包及接口.ppt項目七程序的異常處理.ppt項目八Java的圖形用戶界面開發.ppt項目九Java的事件處理機制.ppt項目十Java的數據庫編程開發.ppt項目十一Java的文件操作.ppt項目十二Java多線程處理.ppt項目十三圖書館管理信息系統.ppt項目十四Java桌面游戲項目開發.ppt08三月20251.1Java的起源

目前Java語言在全世界是使用最為廣泛的計算機編程語言之一。它容易學習而且非常的好用,如果你學習過其它的編程語言,例如C++,你就會覺得C++和Java非常的相似,主要是因為Java和C++中許多基礎的語法一樣,但是我們知道Java和C++是兩種不同的語言,Java只需理解一些最基本的概念,就能夠編寫出各種的應用程序。Java用一種更加容易理解的方式去實現,所以Java相對于C++是簡單的。208三月20251.1.1Java的由來Java總是和C++聯系在一起,而C++則是從C語言派生而來的,所以Java語言繼承了這兩種語言的大部分特性。Java的語法是從C繼承的,Java許多面向對象的特性受到C++的影響。308三月20251.1.2Java的產生

Java是由JamesGosling,PatrickNaughton,ChrisWarth,EdFrank和MikeSheridan于1991年在SunMicrosystems公司設計出來的。開發第一個版本花了18個月。該語言開始名叫“Oak”,于1995年更名為“Java”。從1992的秋天Oak問世到1995的春天公開發布Java語言,許多人對Java的設計和改進做出了貢獻。BillJoy,ArthurvanHoff,JonathanPayne,FrankYellin和TimLindholm是主要的貢獻者,正是他們的貢獻使最初原型得以成熟。408三月20251.1.3Java對Internet為什么重要Internet使Java成為網上最流行的編程語言,同時Java對Internet的影響也意義深遠。在Java產生以前,當前賽百空間有一半的對象實體無法進入網絡世界,是Java為它們打開了便利之門,而且在這個過程中定義了一種全新的程序形式:applet(小應用程序)。508三月2025(1)Java小應用程序和應用程序Java可用來生成兩類程序:應用程序(applications)和Javaapplet(小應用程序。應用程序是可以在你的計算機的操作系統中運行的程序。小應用程序是可以在Internet中傳輸并在兼容Java的Web瀏覽器中運行的應用程序。608三月2025(2)安全性當使用一個兼容Java的Web瀏覽器時,你可以安全地下載Java小應用程序,不必擔心病毒的感染或惡意的企圖。Java實現這種保護功能的方式是,將Java程序限制在Java運行環境中,不允許它訪問計算機的其他部分,后面將介紹這個過程是如何實現的。下載小應用程序并能確保它對客戶機的安全性不會造成危害是Java的一個最重要的方面。708三月2025(3)可移植性正如前面所討論的,許多類型的計算機和操作系統都連接到Internet上。要使連接到Internet上的各種各樣的平臺都能動態下載同一個程序,就需要有能夠生成可移植性執行代碼的方法。很快你將會看到,有助于保證安全性的機制同樣也有助于建立可移植性。實際上,Java對這兩個問題的解決方案是優美的也是高效的。808三月20251.1.4Java的魔力:字節碼字節碼是一套設計用來在Java運行時系統下執行的高度優化的指令集,該Java運行時系統稱為Java虛擬機(JavaVirtualMachine,JVM)。在其標準形式下,JVM就是一個字節碼解釋器。然而,正是通過JVM運行Java程序才有助于解決在Internet上下載程序的主要問題。這就是Java輸出字節碼的原因。908三月2025將Java程序翻譯成字節碼,有助于它更容易地在一個大范圍的環境下運行程序。原因非常直接:只要在各種平臺上都實現Java虛擬機就可以了。在一個給定的系統中,只要系統運行包存在,任何Java程序就可以在該系統上運行。記住:盡管不同平臺的Java虛擬機的細節有所不同,但它們都解釋同樣的Java字節碼。1008三月20251.1.5Java常用語·簡單(Simple)·安全(Secure)·可移植(Portable)·面向對象(Object-oriented)·健壯(Robust)11·多線程(Multithreaded)·體系結構中立(Architecture-neutral)·解釋執行(Interpreted)·高性能(Highperformance)·分布式(Distributed)·動態(Dynamic)08三月20251208三月20251.2程序設計思想的發展1.2.1面向對象編程Java的核心是面向對象編程。事實上,所有的Java程序都是面向對象的,你別無選擇。這一點與C++不同,因為在那里你可以選擇是否面向對象編程。面向對象編程與Java密不可分,因此,在你編寫哪怕是最簡單的Java程序以前,也必須理解它的基本原則。因此,先從面向對象編程的概念講起。1308三月2025(1)兩種范型我們知道,所有的計算機程序都由兩類元素組成:代碼和數據。此外,從概念上講,程序還可以以它的代碼或是數據為核心進行組織編寫。1408三月2025這兩種范型決定程序的構建方法。第一種方法被稱為面向過程的模型(process-orientedmodel),用它編寫的程序都具有線性執行的特點。面向過程的模型可認為是代碼作用于數據,像C這樣的過程式語言采用這個模型是相當成功的。然而,當程序變得更大并且更復雜時,就會出現問題。1508三月2025第二種方式,也就是面向對象的編程(object-orientedprogramming)。面向對象的編程圍繞它的數據(即對象)和為這個數據嚴格定義的接口來組織程序。面向對象的程序實際上是用數據控制對代碼的訪問。下面你將看到,將控制的實體變換為數據,可使程序在組織結構上從若干方面受益。1608三月2025(2)抽象面向對象編程的一個實質性的要素是抽象。人們通過抽象(abstraction)處理復雜性。例如,人們不會把一輛汽車想象成由幾萬個互相獨立的部分所組成的一套裝置,而是把汽車想成一個具有自己獨特行為的對象。1708三月2025面向對象的概念是Java的核心,對程序員來講,重要的是要理解這些概念怎么轉化為程序。你將會發現,在任何主要的軟件工程項目中,軟件都不可避免地要經歷概念提出、成長、衰老這樣一個生命周期,而面向對象的程序設計,可以使軟件在生命周期的每一個階段都處變不驚,有足夠的應變能力。1808三月2025(1)封裝封裝(Encapsulation)是將代碼及其處理的數據綁定在一起的一種編程機制,該機制保證了程序和數據都不受外部干擾且不被誤用。191.2.2面向對象編程的3個原則08三月2025理解封裝性的一個方法就是把它想成一個黑匣子,它可以阻止在外部定義的代碼隨意訪問內部代碼和數據。對黑匣子內代碼和數據的訪問通過一個適當定義的接口嚴格控制。2008三月2025Java封裝的基本單元是類。一個類(class)定義了將被一個對象集共享的結構和行為(數據和代碼)。一個給定類的每個對象都包含這個類定義的行為和結構,好像它們是從同一個類的模子中鑄造出來似的。所以,類是一種邏輯結構,而對象是真正存在的物理實體。2108三月2025既然類的目的是封裝復雜性,在類的內部就應該有隱藏實現復雜性機制。類中的每個方法或變量都可以被標記為私有(private)或公共(public)。類的公共接口代表類的外部用戶需要知道或可以知道的每件事情;私有方法和數據僅能被一個類的成員代碼所訪問,其他任何不是類的成員的代碼都不能訪問私有的方法或變量。2208三月2025(2)繼承繼承(Inheritance)是一個對象獲得另一個對象的屬性的過程。繼承很重要,因為它支持了按層分類的概念。使用了繼承,一個對象就只需定義使它在所屬類中獨一無二的屬性即可,因為它可以從它的父類那兒繼承所有的通用屬性。所以,可以這樣說,正是繼承機制使一個對象成為一個更具通用類的一個特定實例成為可能。2308三月2025繼承性與封裝性相互作用。如果一個給定的類封裝了一些屬性,那么它的任何子類將具有同樣的屬性,而且還添加了子類自己特有的屬性。這是面向對象的程序在復雜性上呈線性而非幾何性增長的一個關鍵概念。新的子類繼承它的所有祖先的所有屬性。它不與系統中其余的多數代碼產生無法預料的相互作用。2408三月2025(3)多態性多態性(Polymorphism,來自于希臘語,表示“多種形態”)是允許一個接口被多個同類動作使用的特性,具體使用哪個動作與應用場合有關。251.2.3多態性、封裝性與繼承性相互作用如果用得當,在由多態性、封裝性和繼承性共同組成的編程環境中可以寫出比面向過程模型環境更健壯、擴展性更好的程序。08三月202526所有的Java程序都是面向對象的。或者,更精確地說,每個Java程序都具有封裝性、繼承性及多態性。Java提供的許多特性是它的內置類庫的一部分,這個庫使封裝性、繼承性及多態性得到更廣泛應用。08三月2025271.3Java的三大開發體系Java發展到今天,已從編程語言發展成為全球第一大通用開發平臺。Java技術已被計算機行業主要公司所采納。1999年,Sun公司推出了以Java2平臺為核心的J2SE、J2EE和J2ME三大平臺。隨著三大平臺的迅速推進,全球形成了一股巨大的Java應用浪潮。08三月2025281.Java2Platform,StandardEdition(J2SE)2.Java2Platform,EnterpriseEdition(J2EE)3.Java2Platform,MicroEdition(J2ME)08三月202529J2SE用于小型程序,J2EE用于大型程序,J2ME用于手機等程序。J2SE包含于J2EE中,J2ME包含了J2SE的核心類,但新添加了一些專用類。J2SE是基礎;壓縮一點,再增加一些CLDC等方面的特性就是J2ME;擴充一點,再增加一些EJB等企業應用方面的特性就是J2EE。08三月202530謝謝!08三月202531項目二Java程序設計初識

2.1Java開發環境的搭建

2.2Eclipse集成開發工具

2.3簡單Java程序的實現2.4拓展實訓08三月2025332.1Java開發環境的搭建2.1.1安裝JDK開發環境

JDK(Java開發工具包)是Sun公司提供的Java開發環境和運行環境,是所有Java應用程序的基礎。JDK包括一組API和JRE,這些API是構建Java應用程序的基礎,而JRE是運行Java應用程序的基礎。JDK包括J2ME(微型版)、J2SE(標準版)和J2EE(企業版)3個版本,最基本的開發包是J2SE。08三月2025342.1Java開發環境的搭建安裝過程參見教材P708三月2025352.1Java開發環境的搭建2.1.2系統環境變量的配置

Java源程序進行編譯和執行時,需要知道JDK中編譯器和解釋器所在的磁盤物理位置,以及程序所用到的類庫所在的位置。

開發人員可以通過配置系統環境變量的方式,為Java類庫提供查找搜索路徑(CLASSPATH),為編譯器和解釋器提供查找搜索路徑(Path)等信息。08三月2025362.1Java開發環境的搭建配置過程參見教材P808三月2025372.2Eclipse集成開發工具2.2.1Java集成開發工具簡介從Java誕生到如今,除了Sun公司自身提供的開發工具外,還有許多的第三方開發工具被廣泛使用。下面介紹幾款Java集成開發工具:JCreatorNetBeansEclipseJBuilder08三月2025382.2Eclipse集成開發工具2.2.2Eclipse的下載與安裝

Eclipse是一個開放源代碼的、基于Java的可擴展集成開發平臺。Eclipse本身只是一個框架和一組服務,用于通過插件組件構建開發環境。只要有合適的組件,Eclipse不但能夠支持開發Java應用程序,而且也能夠支持其他的開發語言。由于Eclipse附帶了一個包括Java開發工具(JDT)的標準插件集,因此,只要安裝了Eclipse和JDK,就可以使用Eclipse開發Java應用程序。08三月2025392.2Eclipse集成開發工具1.安裝、啟動Eclipse安裝過程參見教材P1108三月2025402.2Eclipse集成開發工具2.配置Eclipse環境配置過程參見教材P1108三月2025412.2Eclipse集成開發工具2.2.3Eclipse的基本使用創建Java應用程序項目創建過程參見教材P1208三月2025422.2Eclipse集成開發工具2.2.3Eclipse的基本使用2.創建Java公共類源程序創建過程參見教材P1308三月2025432.2Eclipse集成開發工具2.2.3Eclipse的基本使用3.運行Java應用程序項目運行過程參見教材P1308三月2025442.2Eclipse集成開發工具2.2.3Eclipse的基本使用4.關閉和刪除Java應用程序項目過程參見教材P1408三月2025452.2Eclipse集成開發工具2.2.3Eclipse的基本使用5.打開已存在的Java應用程序項目打開過程參見教材P1408三月2025462.3簡單Java程序的實現Java應用程序,根據運行界面是以圖形化要素為主,還是以文本字符為主,可分為兩種主要類型:GUI應用程序(GUIApplication)控制臺應用程序(ConsoleApplication)2.3.1一個簡單的Java程序認識事物的方法是從簡單到復雜、從表象到實質。因此,先從一個簡單的實例入手,來逐步認識這兩種Java程序的基本結構和框架,為后面的開發建立良好的結構基礎。08三月2025472.3簡單Java程序的實現1.

Java應用程序的基本結構作為面向對象的編程語言,Java程序的核心要素是類。類是組成Java程序的最小結構單位。一個Java源程序文件中可以包括一個或多個類的定義。Java應用程序的入口是main方法。所謂入口方法是指Java系統在運行應用程序時最先執行的那個方法。一個Java應用程序必須有且只有一個main方法。包含main方法的類被稱為應用程序的主類,主類必須被定義為公共類。08三月2025482.3簡單Java程序的實現2.簡單的Java應用程序Java應用程序的開發可歸結為如下步驟:(1)用任意文本編輯器創建Java源程序,并以擴展名為.java的文件保存。(2)使用編譯命令將源程序文件編譯成擴展名為.class的類文件。(3)使用運行命令運行程序,查看結果。08三月2025492.3簡單Java程序的實現2.簡單的Java應用程序例題:編寫Java應用程序,在計算機屏幕上輸出一行文本信息:“歡迎訪問Java世界”。完成過程及步驟參見教材P1708三月2025502.3簡單Java程序的實現2.3.2基于控制臺的輸入/輸出結構程序實現在實際的程序編寫過程中,除了輸出環節之外,還包括輸入和處理環節。計算機系統通常都有默認的標準輸入設備和標準輸出設備。對于一般的系統,標準輸入設備通常是指鍵盤,標準輸出設備通常是指顯示器。Java控制臺程序從鍵盤輸入數據,向顯示器輸出數據,是十分常見的數據通信操作。08三月2025512.3簡單Java程序的實現例題:編寫Java應用程序,完成從鍵盤輸入兩個運算數據,計算兩數之和并輸出結果的功能。完成過程及步驟參見教材P2108三月2025522.3簡單Java程序的實現2.3.3基于GUI的輸入/輸出結構程序實現GUI是當今編程的主流,其主要特征包括:程序界面主要由圖形化的要素構成;程序沒有預定好的運行流程,而是由隨機事件來驅動;人機交互由消息機制來支持;輸入設備以鼠標、鍵盤為主。

08三月2025532.3簡單Java程序的實現例題:編寫Java應用程序,利用圖形界面,完成從鍵盤輸入兩個運算數據,計算兩數之和并輸出結果的功能。完成過程及步驟參見教材P2308三月2025542.4拓展實訓實訓1:編寫Java控制臺應用程序,完成從鍵盤輸入圓的半徑,求圓的周長和面積并輸出結果的功能。08三月2025552.4拓展實訓實訓2:編寫JavaGUI應用程序,完成從鍵盤輸入矩形的長和寬,求矩形的周長和面積并輸出結果的功能。謝謝!項目三Java語法基礎3.1用戶標識符與保留字08三月20255708三月20253.1用戶標識符與保留字3.1.1用戶標識符用戶標識符是程序員對程序中各個元素加以命名時使用的命名記號。58使用標識符時,需要遵守幾條規則:

1.

標識符可以由字母、數字、下劃線(_)、美元符($)組成,但不能包含@、%、空格等其它特殊字符,不能以數字開頭。

08三月2025592.

標識符不能是Java關鍵字和保留字(Java預留的關鍵字,以后的升級版本中有可能作為關鍵字),但可以包含關鍵字和保留字。如:不可以使用

void

作為標識符,但是

Myvoid

可以。

08三月2025603.標識符是嚴格區分大小寫的。所以一定要分清楚

imooc

IMooc

是兩個不同的標識符。

08三月2025614.標識符的命名最好能反映出其作用,做到見名知意。08三月202562例如:userName,Id_Name,_sys_str,Name,name,$price等為合法的標識符。而:7mail,room#,#home為非法的標識符。08三月20256308三月20253.1.2保留字保留字是特殊的標識符,具有專門的意義和用途,不能當作用戶的標識符使用。64Java語言中的保留字均用小寫字母表示。08三月202565保留字08三月202566abstractbreakbytebooleancatchcaseclasscharcontinuedefaultdoubledoelseextendsfalsefinalfloatForfinallyifimportimplementsintinterfaceinstanceoflonglengthnativenewnullpackageprivateprotectedpublicreturnswitchshortstaticsupertrytruethisthrowthrowsvoidthreadsafetransientwhilesynchronized

謝謝!08三月2025673.2數據類型3.3Java運算符和表達式08三月202568項目三Java語法基礎08三月20253.2數據類型Java語言的數據類型可劃分為基本數據類型和引用數據類型6908三月20253.2.1常量和變量1.常量所謂常量就是在程序運行過程中保持不變的量即不能被程序改變的量,也把它稱為最終量。常量可以分為標識常量和直接常量(字面常量)。7008三月20252.變量變量是程序中的基本存儲單元,在程序的運行過程中可以隨時改變其存儲單元的值。7108三月20253.2.2基本數據類型1.整型1)整型常量的表示方法整型常量能以十進制、八進制和十六進制表示。2)整型變量的定義例如:intx=215; //指定變量x為int型,且賦初值為2157208三月20252.字符型(char)字符型(char)數據占據兩個字節16個二進制位。字符常量是用單引號括起來的一個字符,如‘a’,‘A’等。7308三月20253.布爾型(boolean)布爾型數據的值只有兩個:true和false。因此布爾的常量值也只能取這兩個值。7408三月20254.浮點型(實型)Java提供了兩種浮點型數據,單精度和雙精度,7508三月20253.2.3基本數據類型的封裝在Java中,對每種基本的數據類型都提供了其對應的封裝類(稱為封裝器類wrapperclass)。7608三月20253.3Java運算符和表達式3.3.1算術運算符和算術表達式算術運算符用于數值量的算術運算,它們是:+(加),-(減),*(乘),/(除),%(求余數),++(自加1),--(自減1)。7708三月20253.3.2關系運算符和關系表達式關系運算符用于兩個量的比較運算,它們是:>(大于),<(小于),>=(大于等于),<=(小于等于),==(等于),!=(不等于)。7808三月20253.3.3布爾邏輯運算符和布爾表達式布爾邏輯運算符用于布爾量的運算,有3個布爾邏輯運算符:!(邏輯非)、&&(邏輯與)、||(邏輯或)7908三月20253.3.4位運算符及表達式位運算符主要用于整數的二進制位運算。可以把它們分為移位運算和按位運算。8008三月20253.3.5賦值運算符(=)和賦值表達式賦值運算符是最常用的運算符,用于把一個表達式的值賦給一個變量(或對象)。8108三月20253.3.6條件運算符(?:)及表達式條件運算符是三元運算符,有條件運算符組成的條件表達式的一般使用格式是:邏輯(關系)表達式

?表達式1:表達式28208三月20253.3.7對象運算符1、構造對象(new)new運算符主要用于構建類的對象。2、分量運算符(.).運算符主要用于獲取類、對象的屬性和方法。3、對象測試(instanceof)instanceof運算符主要用于對象的測試。將在后邊應用時介紹它。8308三月20253.3.8其它運算符1、數組下標運算符([])2、強制類型轉換運算符((類型))3.()運算符4.字符串連接符(+)8408三月20253.3.9表達式的運算規則最簡單的表達式是一個常量或一個變量,當表達式中含有兩個或兩以上的運算符時,就稱為復雜表達式。85謝謝!08三月2025863.4Java程序的注釋方式3.5Java程序的輸入輸出08三月202587項目三Java語法基礎3.4Java程序的注釋方式08三月202588一般程序設計語言都提供了程序注釋的方式,要想讓別人讀懂自己編寫的程序,沒有注釋是比較困難的。Java提供了兩種注釋方式:程序注釋和程序文檔注釋。(一)程序注釋如前所述,程序注釋主要是為了程序的易讀性。閱讀一個沒有注釋的程序是比較痛苦的事情,因為對同一個問題,不同的人可能有不同的處理方式,要從一行行的程序語句中來理解他人的處理思想是比較困難的,特別對初學者來說。因此對一個程序語句,一個程序段,一個程序它的作用是什么,必要時都應該用注釋簡要說明。

08三月202589程序中的注釋不是程序的語句部分,它可以放在程序的任何地方,系統在編譯時忽略它們。08三月202590注釋可以在一行上,也可在多行上。有如下兩種方式的注釋:1.以雙斜杠(//)開始以“//”開始后跟注釋文字。這種注釋方式可單獨占一行,也可放在程序語句的后邊。08三月202591例如,在下邊的程序片段中使用注釋://下面定義程序中所使用的變量 intage; //定義一整型變量age,表示年齡。Stringname;//定義一字符串變量name,表示名字。08三月2025922.以“/*”開始,以“*/”結束當需要多行注釋時,一般使用“/*……*/”格式作注釋,中間為注釋內容。08三月202593(二)程序文檔注釋程序文檔注釋是Java特有的注釋方式,它規定了一些專門的標記,其目的是用于自動生成獨立的程序文檔。程序文檔注釋通常用于注釋類、接口、變量和方法。08三月202594/**該類包含了一些操作數據庫常用的基本方法,諸如:在庫中建立新的數據表、

*在數據表中插入新記錄、刪除無用的記錄、修改已存在的記錄中的數據、查詢

*相關的數據信息等功能。

*@authorLilyXu*@version3.20,05/02/17*@sinceJDK1.8*/08三月2025953.5Java程序的輸入輸出08三月202596在開始編寫Java應用程序之前,先介紹一下Java程序的輸入輸出。在任何程序中,輸入數據和輸出結果都是必不可少的。由于輸入和輸出的途徑不同,輸入輸出的方法也就不一樣。Java沒有提供專用的輸入輸出命令或語句,它的輸入輸出是靠系統提供的輸入輸出類的方法實現的。08三月20253.5.1字符界面下的輸入輸出方法字符界面下的輸入輸出是由Java的基類System提供的,在前邊的示例中,我們已經使用了System.out.println()方法在屏幕上輸出信息。9708三月20251.輸入方法格式:System.in.read();功能:該方法的功能是從鍵盤上接受一個字符,按照byte類型的數據處理。若將它轉換為字符型,它就是字符本身;若轉換為整型,它是擴展字符的ASCII碼值(0~255)。982.輸出方法格式1:System.out.print(表達式);格式2:System.out.println(表達式);功能:在屏幕上輸出表達式的值。08三月2025993.5.2圖形界面下的輸入輸出方法有關圖形界面的程序設計將在后邊的章節詳細介紹,本節將以對話框的形式介紹圖形界面下的輸入輸出。在javax.swing類庫中的JoptionPane類提供了相應的輸入輸出方法。08三月20251001.輸入方法格式1:JOptionPane.showInputDialog(輸入提示信息);格式2:JOptionPane.showInputDialog(輸入提示信息,初值);功能:系統顯示一個對話框,可以在輸入提示信息后邊的文本框中輸入值。格式2帶有初值,在輸入的文本框中顯示該值,若要改變其值,直接輸入新的值即可。08三月20251012.輸出方法格式1:JOptionPane.showMessageDialog(框架,表達式);格式2:JOptionPane.showMessageDialog(框架,表達式,標題,信息類型);功能:在對話框中顯示相關的信息。08三月2025102謝謝!08三月20251033.6分支控制語句3.7循環控制語句08三月2025104項目三Java語法基礎3.6分支控制語句Java語句包含一系列的流程控制語句,這些控制語句表達了一定的邏輯關系,所以可選擇性的或者是可重復性的執行某些代碼行,每一個流程控制語句實際上是個代碼塊,塊的開始和結束都是用大括號來進行表示的,其中“{”表示開始,“}”表示結束。08三月20251053.6.1if條件分支語句三種不同形式if條件分支語句格式1:if(布爾表達式)語句;功能:若布爾表達式(關系表達式或邏輯表達式)產生true(真)值,則執行語句,否則跳過該語句。08三月2025106格式2if(布爾表達式)語句1;else語句2;08三月2025107格式3if(布爾表達式1)語句1;elseif(布爾表達式2)語句2;……elseif(布爾表達式n-1)語句n-1;else語句n;08三月2025108例題

考試成績劃定五個級別,當成績大于或等于90分時,劃定為優;當成績大于或等于80且小于90時,劃定為良;當成績大于或等于70且小于80時,劃定為中;當成績大于或等于60且小于70時,劃定為及格;當成績小于60時,劃定為差。可以寫出下邊的程序代碼:08三月2025109/*這是一個劃定成績級別的簡單程序*程序的名字是ScoreExam3_7.java*它主要演示多者擇一分支語句的應用。*/08三月2025110publicclassScoreExam3_7{publicstaticvoidmain(String[]args){intscore=82;if(score>=90)System.out.println("成績為優="+score);elseif(score>=80)System.out.println("成績為良="+score);elseif(score>=70)System.out.println("成績為中="+score);elseif(score>=60)System.out.println("成績為及格="+score);elseSystem.out.println("成績為差="+score);}}08三月20251113.6.2switch條件語句switch語句的一般格式如下:switch(表達式){case常量1:語句組1;[break;]case常量2:語句組2;[break;]……………case常量n:語句組n;[break;]default:語句組n+1;}08三月2025112publicclassSwitchExam3_4{publicstaticvoidmain(String[]args){ intscore=75; intn=score/10;

08三月2025113switch(n){ case10: case9:System.out.println("成績為優="+score);break; case8:System.out.println("成績為良="+score); break; case7:System.out.println("成績為中="+score); break; case6:System.out.println("成績為及格="+score); break; default:System.out.println("成績為差="+score); }}}08三月20251143.7循環控制語句08三月20251153.7.1for循環語句for循環語句的一般格式如下:for(表達式1;表達式2;表達式3){

語句組;//循環體}08三月20251163.7.2While和do-While循環語句一般情況下,for循環用于處理確定次數的循環;while和do-while循環用于處理不確定次數的循環。本章小結本章簡要介紹了Java程序中的基本量:標識符、數據類型、運算符及表達式,它們是程序設計的基礎,應該掌握它們并能熟練地應用。數據類型可分為基本數據類型和引用型數據類型兩種,本章介紹了基本數據類型,引用型數據類型將在后邊的章節中介紹。08三月2025117本章還討論了程序的注釋、簡單的輸入輸出方法、條件分支結構的控制語句和循環結構的控制語句以及break、continue、return等控制語句,它們是程序設計的基礎,應該認真理解熟練掌握并應用。08三月2025118本章的重點:標識符的命名規則、變量和常量的定義及使用、運算符及表達式、不同數據類型值之間的相互轉換規則、運算式子中的運算規則(按運算符的優先順序從高向低進行,同級的運算符則按從左到右的方向進行)。08三月2025119三種格式的if分支結構和switch多分支結構、for循環結構、while循環結構、do…while循環結構、break語句、continue語句和return語句的使用。要注意不同格式分支結構的功能,不同循環結構之間使用上的差別,只有這樣,我們才能在實際應用中正確使用它們。08三月2025120謝謝!08三月2025121項目四數組4.1一維數組08三月202512208三月20254.1一維數組1.一維數組的聲明一維數組聲明的一般格式如下:數據類型數組名[];或:數據類型[]數組名;123例如:intintArray[];//聲明一個整型數組StringstrArray[];//聲明一個字符串數組08三月202512408三月20252.一維數組大小的定義及初始化一般情況下,使用new運算符定義數組大小,例如下邊的程序語句:intintA[];//聲明一個整型數組intA=newint[5];//定義數組可以存放5個整數元素125StringstrA[];//聲明一個字符串數組StringstrA=newString[3];//定義數組可以存放三個字符串元素08三月2025126//為數組中每個元素賦值intA[0]=1;//數組下標從0開始intA[1]=2;intA[2]=3;intA[3]=4;intA[4]=5;strA[0]="How";strA[1]="are";strA[2]="you";08三月2025127通常我們也采用如下方式為數組元素賦初值并由初值的個數確定數組的大小:intintA[]={1,2,3,4,5};StringstringA[]={"How","are","you"};以達到和上邊同樣的目的。08三月202512808三月20253.一維數組元素的引用如前所述,以數組名和下標引用數組元素,數組元素的引用方式為:數組名[下標]129謝謝!08三月2025130項目四數組4.2二維及多維數組08三月20251314.2二維及多維數組1、二維數組的聲明聲明二維數組的一般格式如下:數據類型

數組名[][];或:數據類型[][]數組名;08三月202513208三月20252、二維數組大小的定義及初始化(1)先聲明而后定義最后再賦值例如下邊的程序語句:intmatrix[][];//聲明二維整型數組matrixmatrix=newint[3][3];//定義matrix包含3×3九個元素133matrix[0][0]=1;//為第一個元素賦值matrix[0][1]=2;//為第二個元素賦值………………matrix[2][2]=9;//為第九個元素賦值08三月202513408三月2025(2)直接定義大小而后賦值例如下邊的程序語句:intmatrix=newint[3][3];//定義二維整型數組matrix包含3×3九個元素matrix[0][0]=1;//為第一個元素賦值………………matrix[2][2]=9;//為第九個元素賦值13508三月2025(3)由初始化值的個數確定數組的大小在元素個數較少并且初值已確定時通常采用此種方式,例如:intmatrix[][]={{1,2,3},{4,5,6},{7,8,9}};//由元素個數確定3行3列13608三月20253.二維數組元素的應用1374.不同長度的二維數組要存儲乘法表的值需要一個三角數組。在Java中,由于把二維數組看作是一維數組的數組,因此可以把二維數組的每一行作為一個一維數組分別定義,并不要求二維數組每一行的元素個數都相同。08三月2025138inta[][]=newint[2][];//說明a是二維數組,有2行a[0]=newint[3]; //a[0]定義第1行,有3列a[1]=newint[5]; //a[1]定義第2行,有5列08三月2025139謝謝!08三月2025140項目四數組

4.3數組(Arrays)類08三月202514108三月20254.3數組(Arrays)類數組類提供眾多的類方法(靜態方法)對各種類型的數組進行運算操作,下邊列出一些常用的類方法供大家使用時參考,如果使用其他的方法可參閱JDK文檔。142(1)staticvoidsort(數據類型[]數組名)

用于對數組進行排序(升序),數據類型是除boolean之外的任何數據類型。08三月2025143(2)staticvoidsort(數據類型[]a,intstart,intend)

對數組a中指定范圍從start到end位置之間的數據元素進行排序。當start大于end時引發IllegalArgumentException異常。當超界時,引發ArrayIndexOutOfBoundsException異常。08三月2025144(3)staticvoidfill(數據類型[]a,數據類型value)

設置a數組各個元素的值為value。08三月2025145(4)staticvoidfill(數據類型[]a,intstart,intend,數據類型value)

設置a數組中從start到end位置的元素的值為value。08三月2025146(5)staticintbinarySeach(數據類型[]a,數據類型key)

利用二進制搜索數組(排過序)內元素值為key的所在位置。08三月2025147(6)staticbooleanequals(數據類型[]d1,數據類型[]d2)

判斷d1和d2兩數組是否相等。08三月2025148我們只要掌握類方法的引用即可對數組進行相關的運算操作。類方法的一般引用格式如下:類名.方法名(參數表);08三月2025149謝謝!08三月2025150項目四數組4.4字符串08三月202515108三月20254.4

字符串字符是一種基本的數據類型,而字符串是抽象的數據類型,只能使用對象表示字符串。前邊我們已經對字符串進行了簡單處理及其操作。下邊我們將詳細介紹用于字符串處理的類及其應用。15208三月20254.4.1String類String類是最常用的一個類,它用于生成字符串對象,對字符串進行相關的處理。1、構造字符串對象在前邊我們使用字符串時,是直接把字符串常量賦給了字符串對象。其實String類提供了如下一些常用的構造函數用來構造字符串對象:15308三月20251)String()構造一個空的字符串對象。2)String(charchars[])以字符數組chars的內容構造一個字符串對象。3)String(charchars[],intstartIndex,intnumChars)以字符數組chars中從startIndex位置開始的numChars個字符構造一個字符串對象。15408三月20254)String(byte[]bytes)以字節數組bytes的內容構造一個字符串對象。5)String(byte[]

bytes,int

offset,int

length)以字節數組bytes中從offset位置開始的length個字節構造一個字符串對象。15508三月20252.String類對象的常用方法String類也提供了眾多的方法用于操作字符串,以下列出一些常用的方法:1)publicintlength()此方法返回字符串的字符個數。15608三月20252)publiccharcharAt(intindex)此方法返回字符串中index位置上的字符,其中index值的范圍是0~length-1。157例如:Stringstr1=newString(“Thisisastring.”);//定義字符串對象str1intn=str1.length();//獲取字符串str1的長度n=17charch1=str1.charAt(n-2);//獲取字符串str1倒數第二個字符,ch1=’g’08三月202515808三月20253)publicintindexOf(charch)返回字符ch在字符串中第一次出現的位置。4)publiclastIndexOf(charch)返回字符ch在字符串中最后一次出現的位置。1595)publicintindexOf(Stringstr)返回子串str在字符串中第一次出現的位置。6)publicintlastIndexOf(Stringstr)返回子串str在字符串中最后一次出現的位置。08三月202516008三月20257)publicintindexOf(charch,intfromIndex)返回字符ch在字符串中fromIndex位置以后第一次出現的位置。8)publiclastIndexOf(charch,intfromIndex)返回字符ch在字符串中fromIndex位置以后最后一次出現的位置16108三月20259)publicintindexOf(Stringstr,intfromIndex)返回子串str在字符串中fromIndex位置后第一次出現的位置。10)publicintlastIndexOf(Stringstr,intfromIndex)返回子串str在字符串中fromIndex位置后最后一次出現的位置。16208三月202516311)publicStringsubstring(int

beginIndex)返回字符串中從beginIndex位置開始的字符子串。12)publicStringsubstring(int

beginIndex,int

endIndex)返回字符串中從beginIndex位置開始到endIndex位置(不包括該位置)結束的字符子串。08三月202516413)publicStringcontact(Stringstr)用來將當前字符串與給定字符串str連接起來。14)publicStringreplace(charoldChar,charnewChar)用來把串中所有由oldChar指定的字符替換成由newChar指定的字符以生成新串。15)publicStringtoLowerCase()把串中所有的字符變成小寫且返回新串。16)publicStringtoUpperCase()把串中所有的字符變成大寫且返回新串。08三月202516508三月202517)publicStringtrim()去掉串中前導空格和拖尾空格且返回新串。18)publicString[]split(String

regex)以regex為分隔符來拆分此字符串。16608三月20254.4.2StringBuffer類在字符串處理中,String類生成的對象是不變的,即String中對字符串的運算操作不是在源字符串對象本身上進行的,而是使用源字符串對象的拷貝去生成一個新的字符串對象,其操作的結果不影響源串。1674.4.3StringTokenizer類字符串是Java程序中主要的處理對象,在Java.util類包中提供的StringTokenizer(字符串標記)類主要用于對字符串的分析、析取。如提取一篇文章中的每個單詞等。08三月2025168謝謝!08三月2025169項目五面向對象的程序設計基礎5.1面向對象的基本概述08三月202517008三月20255.1面向對象的基本概述人們期待著一種效率高、簡單、易理解且更加符合人們思維習慣的程序設計語言,以加快軟件的開發步伐、縮短軟件開發生命周期,面向對象就是在這種情況下應運而生的。171我們可以把客觀世界中的每一個實體都看作是一個對象,如一個人、一朵花、一臺機床、一個輸入框等等。因此對象可以簡單定義為:“展示一些定義好的行為的、有形的實體”。08三月2025172當然在我們的程序開發中,對象的定義并不局限于看得見摸得著的實體,諸如一個咨詢公司,它作為一個機構,并沒有物理上的形狀,但卻具有概念上的形狀,它有明確的經營目的和業務活動。08三月2025173根據面向對象的倡導者GradyBooch的理論,對象具有如下特性:(1)它具有一種狀態;(2)它可以展示一種行為;(3)它具有唯一的標識。08三月2025174對象的狀態通過一系列屬性及其屬性值來表示;對象的行為是指在一定的期間內屬性的改變;標識是用來識別對象的,每一個對象都有唯一的標識,諸如每個人都有唯一的特征,在社會活動中,使用身份證號碼來識別。08三月202517508三月2025我們生活在一個充滿對象的世界中,放眼望去,不同形狀、不同大小和顏色各異的對象;靜止的和移動的對象。面對這些用途各異、五花八門的對象,我們該如何下手處理它們呢?176借鑒于動物學家將動物分成綱、屬、科、種的方法。我們也可以把這些對象按照它們所擁有的共同屬性進行分類。例如,鴿子、燕子、麻雀等都叫作鳥。它們具有一些共同的特性:有羽毛、有飛翔能力、下蛋孵化下一代等。因此我們把它們歸屬為鳥類。08三月2025177綜上所述我們可以簡單地把類定義為:“具有共同屬性和行為的一系列對象”。08三月202517808三月20255.1.2面向對象的特點1.什么是面向對象面向對象的方法將系統看作是現實世界對象的集合,在現實世界中包含被歸類的對象。179如前所述,面向對象系統是以類為基礎的,我們把一系列具有共同屬性和行為的對象劃歸為一類。屬性代表類的特性,行為代表有類完成的操作。08三月2025180例如,汽車類定義了汽車必須有屬性:車輪個數、顏色、型號、發動機的能量等。類的行為有:啟動、行駛、加速、停止等。對象是類的一個實例,它展示了類的屬性和行為。例如,張經理的那輛奔馳牌轎車就是汽車類的一個對象08三月202518108三月20252.面向對象的特性1)抽象所謂抽象就是不同的角色站在不同的角度觀察世界。面向對象的程序設計可以根據問題來描述問題,不必受限于特定類型的問題。182比如,當你購買手機時,站在使用的角度,你所關注的是手機的品牌、外觀及功能等等。然而,對于手機的維修人員來說,站在維修的角度,他們所關注的是手機的內部,各部分元器件的組成及工作原理等。08三月2025183其實,所有編程語言的最終目的都是提供一種“抽象”方法。在早期的程序設語言中,一般把所有問題都歸納為列表或算法,其中一部分是面向基于“強制”的編程,而另一部分是專為處理圖形符號設計的。08三月2025184每種方法都有自己特殊的用途,只適合解決某一類的問題。面向對象的程序設計可以根據問題來描述問題,不必受限于特定類型的問題。08三月20251852)繼承繼承提供了一種有助于我們概括出不同類中共同屬性和行為的機制,并可由此派生出各個子類。08三月2025186在Java中,不允許類的多重繼承(即子類從多個父類繼承屬性和行為),也就是說子類只允許有一個父類。父類派生多個子類,子類又可以派生多個子子類……這樣就構成了類的層次結構。08三月202518708三月20253)封裝封裝提供了一種有助于我們向用戶隱藏他們所不需要的屬性和行為的機制,而只將用戶可直接使用的那些屬性和行為展示出來。18808三月20254)多態多態指的是對象在不同情況下具有不同表現的一種能力。在Java中通過方法的重載和覆蓋來實現多態性。18908三月20253.面向對象的好處今天我們選擇面向對象的程序設計方法,其主要原因是:1)現實的模型從邏輯理念上講,用面向對象的方法來描述現實世界的模型比傳統的過程方法更符合人的思維習慣。19008三月20252)重用性在面向對象的程序設計過程中,我們創建了類,這些類可以被其他的應用程序所重用,這就節省程序的開發時間和開發費用,也有利于程序的維護。19108三月20253)可擴展性面向對象的程序設計方法有利于應用系統的更新換代。當對一個應用系統進行某項修改或增加某項功能時,不需要完全丟棄舊的系統,只需對要修改的部分進行調整或增加功能即可。可擴展性是面向對象程序設計的主要優點之一。192謝謝!08三月2025193項目五面向對象的程序設計基礎

5.2類08三月202519408三月20255.2類5.2.1定義類如前所述,類是對現實世界中實體的抽象,類是一組具有共同特征和行為的對象的抽象描述。19508三月2025因此,一個類的定義包括如下兩個方面:定義屬于該類對象共有的屬性(屬性的類型和名稱);定義屬于該類對象共有的行為(所能執行的操作即方法)。19608三月2025類包含類的聲明和類體兩部分,其定義類的一般格式如下:[訪問限定符][修飾符]class類名[extends父類名][implements接口名列表>]//類聲明

197{//類體開始標志[類的成員變量說明]//屬性說明[類的構造方法定義][類的成員方法定義]//行為定義}//類體結束標志08三月202519808三月20255.2.2成員變量成員變量用來表明類的特征(屬性)。聲明或定義成員變量的一般格式如下:[訪問限定符][修飾符]數據類型成員變量名[=初始值];199static表明聲明的成員變量為靜態的。靜態成員變量的值可以由該類所有的對象共享,它屬于類,而不屬于該類的某個對象。即使不創建對象,使用“類名.靜態成員變量”也可訪問靜態成員變量。final表明聲明的成員變量是一個最終變量,即常量。08三月2025200transient表明聲明的成員變量是一個暫時性成員變量。一般來說成員變量是類對象的一部分,與對象一起被存檔(保存),但暫時性成員變量不被保存。volatile表明聲明的成員變量在多線程環境下的并發線程中將保持變量的一致性。08三月202520108三月20255.2.3成員方法方法用來描述對象的行為,在類的方法中可分為構造器方法和成員方法,先介紹成員方法。成員方法用來實現類的行為。方法也包含兩部分,方法聲明和方法體(操作代碼)。20208三月2025方法定義的一般格式如下:[訪問限定符][修飾符]返回值類型方法名([形式參數表])[throws異常表]203{[變量聲明]//方法內用的變量,局部變量[程序代碼]//方法的主體代碼[return[表達式]]//返回語句}08三月202520408三月20255.2.4構造方法構造方法用來構造類的對象。如果在類中沒有構造方法,在創建對象時,系統使用默認的構造方法。205定義構造方法的一般格式如下:[public]類名([形式參數列表]){[方法體]}08三月202520608三月2025我們可以把構造方法的格式和成員方法的格式作一個比較,可以看出構造方法是一個特殊的方法。應該嚴格按照構造方法的格式來編寫構造方法,否則構造方法將不起作用。20708三月2025有關構造方法的格式強調如下:1)構造方法的名字就是類名。2)訪問限定只能使用public或缺省。一般聲明為public,如果缺省,則只能在同一個包中創建該類的對象。3)在方法體中不能使用return語句返回一個值。208謝謝!08三月2025209項目五面向對象的程序設計基礎5.3對象08三月202521008三月20252115.3對象5.3.1對象的創建創建對象需要以下三個步驟:1.聲明對象聲明對象的一般格式如下:類名

對象名;例如:Citizenp1,p2;//聲明了兩個公民對象Floatf1,f2;//聲明了兩個浮點數對象08三月202521208三月20252132.創建對象對象只有在創建后才能使用,創建對象的一般格式如下:對象名=new類構造方法名([實參表]);其中:類構造方法名就是類名。new運算符用于為對象分配存儲空間,它調用構造方法,獲得對象的引用(對象在內存中的地址)。例如:p1=newCitizen(“張三”,”張山”,”女”,newDate(),”中國北京”,);f1=newFloat(26f);f2=newFloat(38f);08三月2025214注意:聲明對象和創建對象也可以合并為一條語句,其一般格式是:類名

對象名=new類構造方法名([實參表]);08三月2025215例如:Citizenp1=newCitizen(“張三”,”張山”,”女”,newDate(),”中國北京”,);Floatf1=newFloat(26f);Floatf2=newFloat(38f);08三月202521608三月20253.引用對象在創建對象之后,就可以引用對象了。引用對象的成員變量或成員方法需要對象運算符“.”。引用成員變量的一般格式是:對象名.成員變量名21708三月2025引用成員方法的一般格式是:對象名.成員方法名([實參列表])在創建對象時,某些屬性沒有給于確定的值,隨后可以修改這些屬性值。2185.3.3對象的清除在Java中,程序員不需要考慮跟蹤每個生成的對象,系統采用了自動垃圾收集的內存管理方式。運行時系統通過垃圾收集器周期性地清除無用對象并釋放它們所占的內存空間。08三月2025219垃圾收集器作為系統的一個線程運行,當內存不夠用時或當程序中調用了System.gc()方法要求垃圾收集時,垃圾收集器便于系統同步運行開始工作。在系統空閑時,垃圾收集器和系統異步工作。08三月2025220事實上,在類中都提供了一個撤銷對象的方法finalize(),但并不提倡使用該方法。若在程序中確實希望清除某對象并釋放它所占的存儲空間時,只須將空引用(null)賦給它即可。08三月2025221謝謝!08三月2025222項目五面向對象的程序設計基礎5.4方法的進一步討論5.5變量的進一步討論08三月20252235.4方法的進一步討論主要討論方法引用中的參數傳遞、方法的重載以及static(靜態)方法等概念。08三月20252245.4.1方法引用及參數傳遞在Java中,方法引用有兩種方式:系統自動引用和程序引用。系統自動引用一般用在一些特定的處理中。本節主要介紹程序引用方法及參數傳遞問題。08三月20252251.方法聲明中的形式參數在方法聲明中的“()”中說明的變量被稱之為形式參數(形參),形參也相當于本方法中的局部變量,和一般局部變量所不同的是,它自動接受方法引用傳遞過來的值(相當于賦值)。然后在方法的執行中起作用。08三月2025226例如,在Citizen類中的方法:publicvoidsetName(Stringname){=name;}當對象引用該方法時,該方法的形參name接受對象引用傳遞過來的名字,然后它被賦給對象的屬性name。08三月20252272.方法引用中的實際參數一般我們把方法引用中的參數稱為實際參數(實參),實參可以是常量,變量、對象或表達式。08三月2025228例如:Citizenp2=newCitizen("李明","","男",null,"南京","50110119850624273x");p2.setName("李鳴");08三月20252293.參數傳遞方式參數傳遞的方式有兩種:按值傳遞和按引用傳

溫馨提示

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

評論

0/150

提交評論