項目2 面向?qū)ο缶幊袒A(chǔ)_第1頁
項目2 面向?qū)ο缶幊袒A(chǔ)_第2頁
項目2 面向?qū)ο缶幊袒A(chǔ)_第3頁
項目2 面向?qū)ο缶幊袒A(chǔ)_第4頁
項目2 面向?qū)ο缶幊袒A(chǔ)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向?qū)ο缶幊袒A(chǔ)第二章高等院校公共課系列精品教材Java開發(fā)綜合實戰(zhàn)按照現(xiàn)實世界本來的面貌理解世界,從基礎(chǔ)著手,培養(yǎng)嚴謹求實的優(yōu)秀品質(zhì)。遵循事物的發(fā)展規(guī)律,提高正確認識、分析和解決問題的能力。思政目標(biāo)能夠定義類及類的成員能夠使用對象訪問類的成員能夠使用靜態(tài)成員技能目標(biāo)面向?qū)ο蟮能浖_發(fā)方法的主要特點之一,就是采用數(shù)據(jù)抽象的方法構(gòu)建了一種數(shù)據(jù)類型(類),用于封裝數(shù)據(jù)和相關(guān)的操作。每個類既包含數(shù)據(jù),也包含針對這些數(shù)據(jù)的授權(quán)操作,也就是方法。本項目介紹類和類的各種成員的創(chuàng)建、使用方法,以及在面向?qū)ο缶幊讨谐S玫臄?shù)組和字符串的操作方法。項目導(dǎo)讀任務(wù)1類與對象任務(wù)2使用數(shù)組任務(wù)3處理字符串知識梳理類與對象任務(wù)1任務(wù)引入在學(xué)習(xí)Java之初,小白就知道Java是一門完全面向?qū)ο蟮木幊陶Z言,在學(xué)習(xí)過程中,也總能聽到或看到“面向?qū)ο蟆薄邦悺薄皩ο蟆边@樣的字眼。那么,面向?qū)ο缶幊趟枷胧侨绾卧诔绦蛑畜w現(xiàn)的呢?什么是類,怎樣定義類呢?類包含哪些成員,這些成員又該如何定義并使用呢?任務(wù)1類與對象知識準備面向?qū)ο笫且环N符合人類思維習(xí)慣的編程思想,是一種數(shù)據(jù)抽象和信息隱藏的技術(shù)。程序開發(fā)中引入面向?qū)ο缶幊蹋∣bjectOrientedProgramming,OOP)的概念,其實質(zhì)就是以對象為中心,以消息為驅(qū)動,對現(xiàn)實世界中的對象進行建模操作。它使軟件的開發(fā)更加簡單化,同時又能降低軟件的復(fù)雜性,提高軟件的生產(chǎn)效率,因此得到了廣泛的應(yīng)用。面向?qū)ο笏哂械奶攸c主要可以概括為封裝、繼承和多態(tài)。任務(wù)1類與對象一、面向?qū)ο蠛喗?.封裝封裝是面向?qū)ο蟮暮诵乃枷?,它有兩個含義。一是把描述對象屬性的變量及實現(xiàn)對象功能的方法看成一個密不可分的整體,將這兩者“封裝”在一個不可分割的獨立程序單位(即對象)中;另一層含義指“信息隱藏”,為封裝在一個整體內(nèi)的變量及方法設(shè)置不同級別的訪問權(quán)限。2.繼承繼承主要指的是類與類之間的關(guān)系,首先擁有反映事物一般特性的類,然后在其基礎(chǔ)上派生出能反映特殊事物的類。3.多態(tài)多態(tài)是把子類型的對象主觀地看作其父類型的對象,那么父類型就可以是很多種類型,同一種行為能夠表現(xiàn)很多種不同的形式。任務(wù)1類與對象二、類的聲明與定義1.聲明類類是Java程序的基本要素,使用關(guān)鍵字class聲明類的修飾符包括訪問權(quán)限修飾符、最終類修飾符final和抽象類修飾符abstract三種。2.定義成員變量定義成員變量的方法與定義變量類似,不同的是,成員變量前面可以加上修飾符。類成員的修飾符包括public、protected或者private;靜態(tài)變量修飾符static;常量說明符final。3.定義成員方法定義成員方法的語法格式如下:任務(wù)1類與對象三、構(gòu)造方法在類中除了成員方法之外,還可以定義一種特殊的方法——構(gòu)造方法。構(gòu)造方法是一個與類同名的方法,在使用關(guān)鍵字new實例化對象時默認調(diào)用,初始化對象屬性。構(gòu)造方法具有以下特點:構(gòu)造方法名與所在類的類名相同構(gòu)造方法沒有返回值,不能指定返回類型,也不能定義為void構(gòu)造方法用于初始化無static修飾的成員變量任務(wù)1類與對象如果在類中沒有定義構(gòu)造方法,在實例化對象時,系統(tǒng)會自動生成一個無參數(shù)的構(gòu)造方法。該構(gòu)造方法自動將所有的成員變量初始化為相應(yīng)數(shù)據(jù)類型的默認值,如表所示。任務(wù)1類與對象注意:如果在類中僅定義了有參構(gòu)造方法,則編譯器不會為類自動創(chuàng)建一個無參構(gòu)造方法。這種情況下,如果調(diào)用無參構(gòu)造方法實例化對象,編譯器會報錯。案例——定義矩形類Rectangle本案例定義一個矩形類,演示各種類成員的定義方法。(1)新建一個Java項目ClassDemo,在其中添加一個類Rectangle。(2)在類中定義成員變量任務(wù)1類與對象(3)將光標(biāo)定位在一個成員變量中,然后在菜單欄選擇Source→GenerateGettersandSetters命令。在彈出的對話框中選中要創(chuàng)建getter方法和setter方法的成員變量width和height,插入點為變量area的聲明之后,如圖所示。GenerateGettersandSetters對話框(4)單擊Generate按鈕,即可在編輯器中的指定位置生成成員變量width和height的getter方法和setter方法。(5)在類體中定義有參構(gòu)造方法,然后定義兩個成員方法,分別用于計算矩形的周長和面積。任務(wù)1類與對象四、對象的創(chuàng)建及使用定義了類及其中的類成員之后,就可以在程序中創(chuàng)建類的對象,訪問類中的成員。創(chuàng)建類的對象就是構(gòu)造類的實例,也稱實例化對象,可以理解為基于一個模板定制一個對象。例如,定義了一個矩形類Rectangle,就可以基于該類創(chuàng)建長和寬各不相同的矩形對象。任務(wù)1類與對象案例——計算矩形的周長和面積本案例實例化上一個案例中定義的Rectangle類對象,然后通過調(diào)用類中的方法,計算給定長、寬的矩形的周長和面積。任務(wù)1類與對象運行結(jié)果五、調(diào)用本類結(jié)構(gòu)變量都有作用域,只能在其作用范圍內(nèi)使用。在類體中,成員變量的作用域為整個類體。成員方法的形式參數(shù)和方法體內(nèi)聲明的變量為局部變量,其作用域為方法體。在Java中,this關(guān)鍵字可以描述以下4種結(jié)構(gòu)的引用。當(dāng)前對象:this當(dāng)前類中的屬性:this.屬性當(dāng)前類中的成員方法:this.方法名()當(dāng)前類中的其他構(gòu)造方法:this()任務(wù)1類與對象注意:由于所有類的構(gòu)造方法都是在對象實例化時被默認調(diào)用,所以使用this()調(diào)用構(gòu)造方法的操作一定要放在構(gòu)造方法的第一行。六、定義全局屬性和方法在Java中,關(guān)鍵字static可以聲明所有對象都可以使用的全局屬性和全局方法。使用關(guān)鍵字static聲明的變量或方法稱為靜態(tài)變量或靜態(tài)方法,統(tǒng)稱為靜態(tài)成員。相對地,無static修飾的類成員則稱為動)訪問類結(jié)構(gòu),而靜態(tài)成員在沒有實例化對象時可以通過類名訪問類結(jié)構(gòu)。因此,動態(tài)變量也稱為實例變量,靜態(tài)變量也稱為類變量。態(tài)成員。動態(tài)成員依賴類的實例(即具體的對象任務(wù)1類與對象任務(wù)1類與對象程序報錯非靜態(tài)方法可以調(diào)用靜態(tài)變量和靜態(tài)方法,但靜態(tài)方法不能直接調(diào)用動態(tài)成員,而必須先實例化對象,再由對象來引用動態(tài)成員。例如,類的主方法main()就是一個靜態(tài)方法,如果在主方法中直接訪問類的一個成員變量,就會報錯,提示不能在靜態(tài)方法中訪問非靜態(tài)的成員屬性(field),如圖所示。案例——計算快遞費用假設(shè)某快遞公司只接收重量小于等于100KG的包裹,運費按重量計算,到上海首重12元,續(xù)重1.01~20KG,每千克加收4元;續(xù)重20.1~50KG,每千克加收3.5元;續(xù)重50.1~100KG,每千克加收3元。本案例根據(jù)包裹重量計算首重調(diào)整前后的快遞費用。任務(wù)1類與對象

運行結(jié)果使用數(shù)組任務(wù)2任務(wù)引入在構(gòu)建進銷存管理系統(tǒng)時,小白準備用數(shù)組存放入庫的商品,出庫時從數(shù)組中讀取對應(yīng)的商品信息。那么,在Java中,如何創(chuàng)建數(shù)組并初始化呢?在出庫操作中,如何在數(shù)組中查找指定的商品是否存在呢?任務(wù)2使用數(shù)組知識準備數(shù)組,顧名思義就是一組數(shù)據(jù)。對于每一門編程語言,數(shù)組都是一種重要的數(shù)據(jù)結(jié)構(gòu),是用一個標(biāo)識符封裝到一起的相同類型的基本類型數(shù)據(jù)序列或?qū)ο笮蛄小T诔绦蛟O(shè)計中引入數(shù)組可以更有效地管理和處理數(shù)據(jù)。一、創(chuàng)建數(shù)組Java語言中提供的數(shù)組用來存儲固定大小的同類型元素,可以看作一個對象。根據(jù)數(shù)組的維數(shù),可以分為一維數(shù)組、二維數(shù)組……。本節(jié)僅介紹常用的一維數(shù)組和二維數(shù)組的創(chuàng)建方法。1.一維數(shù)組一維數(shù)組實質(zhì)上是一組相同數(shù)據(jù)類型的數(shù)據(jù)的有序集合,整個序列使用數(shù)組名稱作為標(biāo)識符,其中的每一個數(shù)據(jù)稱為一個數(shù)組元素,按照排列順序,使用一個唯一的索引號(從0開始)進行標(biāo)識。一維數(shù)組有以下兩種聲明方式:元素數(shù)據(jù)類型數(shù)組名稱[];元素數(shù)據(jù)類型[]數(shù)組名稱;任務(wù)2使用數(shù)組2.二維數(shù)組二維數(shù)組可以看作是元素為數(shù)組的數(shù)組,也就是說數(shù)組中的每一個元素都是一個數(shù)組。二維數(shù)組的聲明方式與一維數(shù)組類似,也有兩種聲明方式,不同的是二維數(shù)組中包含兩個方括號[]。具體語法格式如下:元素數(shù)據(jù)類型數(shù)組名稱[][];元素數(shù)據(jù)類型[][]數(shù)組名稱;任務(wù)2使用數(shù)組二、初始化數(shù)組數(shù)組初始化是指創(chuàng)建數(shù)組時使用顯式方式為數(shù)組中的每個元素賦值,有以下兩種語法格式:元素類型數(shù)組名稱[]={以逗號分隔的元素值};元素類型數(shù)組名稱[]=new元素類型[]{以逗號分隔的元素值};任務(wù)2使用數(shù)組注意:下面的初始化方法是錯誤的:int[]arr_A;arr_A={3,6,9,12};三、遍歷數(shù)組如果數(shù)組中存儲的數(shù)據(jù)很多,利用數(shù)組元素有規(guī)律的索引,配合使用循環(huán)結(jié)構(gòu),可以很方便地獲取數(shù)組中的每個元素,也就是遍歷數(shù)組。一維數(shù)組通常使用for循環(huán)實現(xiàn)遍歷,二維數(shù)組則可以利用雙層嵌套的for循環(huán)遍歷所有的行標(biāo)和列標(biāo),從而訪問數(shù)組中的每一個元素。在這里要提請讀者注意的是,對于給定的二維數(shù)組arr[][],最好使用數(shù)組的length屬性值控制循環(huán)次數(shù)。使用length屬性返回數(shù)組長度時,arr.length返回的是二維數(shù)組的行數(shù),arr[i].length返回的是第(i-1)行的列數(shù)。為方便數(shù)組和集合的遍歷,JDK1.5后的版本提供了foreach循環(huán)。任務(wù)2使用數(shù)組案例——轉(zhuǎn)置二維數(shù)組本案例存儲一個3行4列的二維數(shù)組,將數(shù)組元素轉(zhuǎn)置并輸出。任務(wù)2使用數(shù)組運行結(jié)果四、使用Arrays工具類Arrays類的全稱是java.util.Arrays,是java.util包中提供的一個用于操作數(shù)組的實用類。該類包含了一系列的靜態(tài)方法用于操作數(shù)組。下面簡要介紹幾個常用的靜態(tài)方法。1.fill()該方法可將指定的int值分配給int型數(shù)組的每一個元素。2.sort()該方法可將數(shù)值類型和char型數(shù)組中的元素按照元素值由小到大進行排列。3.toString()該方法可對數(shù)組進行遍歷查看,將數(shù)組中的所有元素以一個字符串的形式返回。任務(wù)2使用數(shù)組4.equals()該方法可比較兩個同種類型的數(shù)組的值是否相同,返回布爾類型的邏輯值。5.binarySearch()該方法可按照二分查找算法查找數(shù)組中是否包含指定的值,如果包含,則返回該值在數(shù)組中的索引;如果不包含,則返回負值。6.copyOf()該方法可將指定的數(shù)組從索引為0的元素開始復(fù)制到指定長度的新數(shù)組中。如果給定的長度超過原數(shù)組長度,則用null進行填充。7.copyOfRange()該方法可將源數(shù)組中指定下標(biāo)范圍內(nèi)的元素值復(fù)制到一個新數(shù)組中。任務(wù)2使用數(shù)組案例——復(fù)制并排序數(shù)組本案例創(chuàng)建一個字符數(shù)組,復(fù)制數(shù)組中的前3個元素到新數(shù)組,然后對新數(shù)組排序,并返回指定字母在排序后的新數(shù)組中的索引號。任務(wù)2使用數(shù)組運行結(jié)果處理字符串任務(wù)3任務(wù)引入在商品入庫、出庫、修改和查詢操作中,小白需要使用字符串存儲商品名稱,然后存入數(shù)組,或與數(shù)組中的元素進行比對。在Java中,如何創(chuàng)建字符串呢?怎樣對字符串進行常見的處理操作呢?任務(wù)3處理字符串知識準備在實際項目開發(fā)中,還會經(jīng)常涉及與字符序列有關(guān)的算法,為此,Java專門提供了處理字符序列的字符串類(String類和StringBuffer類)。一、創(chuàng)建String類字符串String類是Java中的文本數(shù)據(jù)類型,本質(zhì)是字符數(shù)組,可以包含若干個字符。字符串中的字符必須包含在雙引號中。字符串是常量,它們的值在創(chuàng)建之后不能更改,但是可以使用其他變量重新賦值的方式進行更改。創(chuàng)建String類的字符串有兩種方式,一種是直接使用雙引號賦值,另一種是使用關(guān)鍵字new創(chuàng)建除此之外,還可以將字符數(shù)組轉(zhuǎn)換為字符串任務(wù)3處理字符串二、String類的常用操作Java提供了豐富的方法處理字符串,可以連接多個字符串或其他類型的數(shù)據(jù)、獲取字符串信息、將字符數(shù)組或字節(jié)數(shù)組或其他類型的數(shù)據(jù)轉(zhuǎn)換為字符串、修改字符串的大小寫和內(nèi)容,以及對字符串進行判斷和比較。1.連接字符串連接字符串是程序設(shè)計中很常用的一種字符串操作,使用“+”運算符就可以連接字符串與其他類型的數(shù)據(jù),生成一個String對象。任務(wù)3處理字符串2.獲取字符串內(nèi)容(1)獲取字符串的長度(2)獲取指定位置的字符(3)獲取指定字符或子串的位置(4)提取子串3.判斷字符串(1)contains()方法(2)startsWith()方法和endsWith()方法(3)equals()方法(4)equalsIgnoreCase()方法任務(wù)3處理字符串注意:只有當(dāng)兩個字符串的長度和內(nèi)容及大小寫都相同時,才表示兩個字符串相同。不能使用關(guān)系運算符==比較兩個字符串是否相同。4.轉(zhuǎn)換字符串(1)轉(zhuǎn)換大小寫(2)其他類型轉(zhuǎn)換為字符串(3)將字符串轉(zhuǎn)成字符數(shù)組或字節(jié)數(shù)組(4)將字符串轉(zhuǎn)換為字符串?dāng)?shù)組5.修改字符串內(nèi)容(1)替換字符內(nèi)容(2)刪除字符串兩端的空格任務(wù)3處理字符串案例——按類別統(tǒng)計商品庫存本案例將商品名稱和對應(yīng)的庫存量以“名稱(庫存量)”的形式存儲在一個字符串?dāng)?shù)組中,通過String類的一些方法統(tǒng)計各類商品的庫存總量。任務(wù)3處理字符串

運行結(jié)果三、正則表達式正則表達式是一種可以用于模式匹配和替換的規(guī)范,由普通的字符(例如字母A~Z)以及特殊字符(稱為元字符)組成的字符串匹配的模式,常用于判斷語句中,用來檢查一個字符串是否含有某種子字符串,或是否滿足某種格式。正則表達式中的普通字符(例如所有的字母和數(shù)字)只能匹配與它們本身相同的字符;而元字符則被賦予了特殊的語義,不是描述它們本身,能展現(xiàn)正則表達式的靈活性和強大的匹配功能。正則表達式中常用的元字符如表所示。任務(wù)3處理字符串任務(wù)3處理字符串如果要匹配指定字符中的任何一個字符,可以在正則表達式中使用方括號將這些字符括起來表示一個元字符。例如以下示例:[a-f]:匹配a~f中的任何一個字母。[a-zA-Z]:匹配任一個英文字母。[^317]:匹配除3、1、7以外的任何字符。此外,在[]中還可以進行并運算、交運算和差運算。例如以下示例:[a-d[H-K]]:并運算,匹配a~d或H~K中的任何一個字母。[a-d&&[c-k]]:交運算,匹配a~d和c~k中相同的任何一個字母,即c和d。[a-d&&[^ac]]:差運算,匹配a~d中除a和c以外的任何一個字母,即b和d。任務(wù)3處理字符串在實際應(yīng)用中,有時對指定元字符出現(xiàn)的次數(shù)有限制,例如郵箱地址中只能有一個@符號。這種情況下,就需要在正則表達式中使用限定修飾符,常用的限定修飾符如表所示。任務(wù)3處理字符串案例——檢查郵箱地址是否合法本案例使用正則表達式對在控制臺輸入的郵箱地址進行匹配,檢查郵箱地址是否合法。任務(wù)3處理字符串運行結(jié)果四、創(chuàng)建StringBuffer對象StringBuffer類是一個類似于String類的字符串緩沖區(qū),可以存儲任意類型的數(shù)據(jù),且支持對字符串內(nèi)容進行修改,長度可變,是線程安全的,通常用于在多線程操作字符串緩沖區(qū)的情況下操作大量數(shù)據(jù)。與String對象不同,StringBuffer對象不能使用直接賦值為字符串常量的方式創(chuàng)建,而應(yīng)該使用關(guān)鍵字new創(chuàng)建任務(wù)3處理字符串五、StringBuffer類的常用方法StringBuffer類不僅提供了一些與String類相同的方法,還具備一些特有的方法操作字符序列,例如添加、刪除、修改、反轉(zhuǎn)等。1.添加數(shù)據(jù)2.刪除數(shù)據(jù)3.修改數(shù)據(jù)4.反轉(zhuǎn)字符序列任務(wù)3處理字符串提示:使用delete()方法刪除字符時,包含起始索引位置的字符,但不包含結(jié)束索引位置的字符。因此,如果

溫馨提示

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

評論

0/150

提交評論