Java程序設(shè)計(第3版) 課件 -第一部分 Java語言的類_第1頁
Java程序設(shè)計(第3版) 課件 -第一部分 Java語言的類_第2頁
Java程序設(shè)計(第3版) 課件 -第一部分 Java語言的類_第3頁
Java程序設(shè)計(第3版) 課件 -第一部分 Java語言的類_第4頁
Java程序設(shè)計(第3版) 課件 -第一部分 Java語言的類_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一部分Java語言的類第1章Java語言概述本章主要介紹Java語言的特點、開發(fā)環(huán)境的安裝以及如何編譯運行一個簡單的Java類。通過學(xué)習(xí)本章,讀者將能快速上手,揭開Java語言的面紗。Java語言的特點1.可移植性可移植性又稱跨平臺性、平臺無關(guān)性,即“一次編寫,處處運行”,可以說是Java語言較為閃光的特點,在任何場合介紹Java語言,都少不了這一特點。2.面向?qū)ο驤ava語言是一門面向?qū)ο螅╫bjectoriented)的語言,也就是說,Java程序都以對象為基本組成單元。3.自動垃圾回收J(rèn)ava語言的垃圾回收機制采用后臺線程自動完成的方式,不需要程序員通過代碼完成,稱為“自動垃圾回收”。4.魯棒性魯棒性又稱健壯性(robustness)。5.簡單性Java語言取消了指針,內(nèi)存管理通過后臺線程自動進(jìn)行;不再使用goto語句,不支持多繼承。第1章Java語言概述面向?qū)ο蟮幕靖拍?.對象Java是面向?qū)ο蟮恼Z言,即使用Java語言開發(fā)應(yīng)用,從需求到設(shè)計,再到編程實現(xiàn),都以對象為驅(qū)動。一個真正的面向?qū)ο蟮膽?yīng)用是嚴(yán)格反映現(xiàn)實世界的,即在現(xiàn)實的業(yè)務(wù)系統(tǒng)中存在的實際對象,計算機應(yīng)用系統(tǒng)中都有相應(yīng)的語言對象。反之也成立,即在現(xiàn)實業(yè)務(wù)系統(tǒng)中不存在的對象,計算機應(yīng)用系統(tǒng)中也不應(yīng)該存在該對象。2.類類是對象的藍(lán)圖,對象都是通過類創(chuàng)建出來的,這個過程也稱為實例化。Java應(yīng)用都由若干類組成,而在運行過程中,都通過類實例化出的若干對象相互協(xié)作,從而實現(xiàn)業(yè)務(wù)邏輯。3.引用Java語言取消了指針,卻有一個概念類似于指針,即引用(reference)。Java語言中沒有明確的指針定義,實質(zhì)上用來創(chuàng)建對象的每個語句返回的都是一個類似指針的引用,只不過大多時候在Java中不用關(guān)心如何操作這個“指針”。引用也可以被稱為“虛地址”,如果兩個對象的引用相同,那么在物理內(nèi)存上就認(rèn)為是一個對象。如果兩個對象的引用不同,那么在物理內(nèi)存上就認(rèn)為是兩個對象。對對象的屬性、方法的調(diào)用,都是通過引用來實現(xiàn)的。第1章Java語言概述第一個Java類環(huán)境搭建1.安裝JDK2.安裝開發(fā)工具Java源代碼可以在任意文本編輯器中編寫,但在開發(fā)企業(yè)級應(yīng)用過程中,一般會采用IDE(集成開發(fā)環(huán)境)工具以提高效率,如Eclipse等。在學(xué)習(xí)Java語言的初期,不必使用IDE工具,建議使用簡單的編輯器,以強化對語言基礎(chǔ)的理解和掌握,如EditPlus編輯器。編譯運行Java類1.編譯代碼2.編譯3.運行第2章Java類的組成類要學(xué)習(xí)Java類的組成,首先要了解Java類的聲明形式。類的聲明形式如下(【】代表可選項):其中public是訪問權(quán)限修飾符,Employee是類名。訪問權(quán)限修飾符的相關(guān)知識將在后面章節(jié)詳細(xì)介紹。該類的類體目前為空,類體往往包括屬性、方法、構(gòu)造方法、塊、內(nèi)部類等元素。第2章Java類的組成屬性類是對象的模板,對象都會有不同的屬性,所以類中應(yīng)該聲明該類所具有的屬性。屬性即對象的數(shù)據(jù),如員工的姓名、薪水、數(shù)量,都是員工類的屬性。屬性的聲明形式如下(【】代表可選項):其中,private是訪問權(quán)限修飾符的一種,表示私有權(quán)限;static是修飾符的一種,表示靜態(tài)變量,二者都不是必須使用的。String、double、int均為數(shù)據(jù)類型,name、salary、count均為屬性名稱,其中count的初值為0。第2章Java類的組成方法方法的聲明形式對象除了具有屬性外,還有自己的行為,即方法。所以類里除了要聲明屬性,還要聲明方法。如員工對象可以修改姓名、修改薪水、查看姓名、查看薪水,這些就是Employee類應(yīng)該聲明的方法。方法的聲明形式如下(【】代表可選項):第2章Java類的組成方法重載假設(shè)Employee的薪水調(diào)整還有一種方案,即根據(jù)員工級別,按照一定比例調(diào)整,那么在Employee類中增加如下方法:至此,Employee類中就有兩個名為setSalary的方法,只不過參數(shù)不同。在Java語言的類中,有多個同名但是不同參的方法,稱為“方法重載(overload)”。所謂不同參數(shù),可能是形式參數(shù)的個數(shù)不同,也可能是類型不同。方法重載能夠增強程序的可讀性。如Employee類中的setSalary(charlevel)方法,命名為setSalary2也可以,不會影響使用,但是可讀性將會降低。兩個方法都跟薪資調(diào)整有關(guān),只是算法不同、參數(shù)不同,所以應(yīng)該使用同樣的名稱,提高可讀性。第2章Java類的組成構(gòu)造方法要想使用Java類,就必須創(chuàng)建類的對象,即對類進(jìn)行實例化。而要創(chuàng)建對象,就必須使用構(gòu)造方法,因此,構(gòu)造方法在Java類中有舉足輕重的作用。構(gòu)造方法的聲明形式如下(【】代表可選項):構(gòu)造方法有兩個顯著特征:①名稱必須與類名相同,且對大小寫敏感;②沒有返回值類型。聲明Employee類中無參的構(gòu)造方法的形式如下:值得注意的是,任何一個Java類都默認(rèn)有一個如上所示的無參構(gòu)造方法。也就是說,即使Employee類中沒有聲明無參的構(gòu)造方法,照樣可以直接使用。如第2.2節(jié)展示的Employee類,其中沒有任何構(gòu)造方法的聲明,但是可以使用如下代碼:第2章Java類的組成塊塊是在Java類中不太常見的一種元素。塊的聲明形式與方法體類似,分實例塊和靜態(tài)塊(static塊)兩種。static的具體含義將在相關(guān)章節(jié)詳細(xì)展開。1.實例塊實例塊的聲明形式如下:2.靜態(tài)塊靜態(tài)塊的聲明形式如下:靜態(tài)塊與實例塊的區(qū)別在于,靜態(tài)塊是只運行一次,而實例塊是每次創(chuàng)建對象時都會運行。因此,靜態(tài)塊往往用來包含該類必須執(zhí)行且只執(zhí)行一次的代碼。第2章Java類的組成內(nèi)部類內(nèi)部類(innerclass)即在類體中聲明的類,包含內(nèi)部類的類被稱為外部類(outerclass)。內(nèi)部類作為外部類的成員存在,可以像方法一樣使用外部類的屬性和方法。內(nèi)部類具有類的特征,可以聲明屬性、方法、構(gòu)造方法等,需要創(chuàng)建對象才能使用類中的方法或?qū)傩缘瘸蓡T。如以下代碼中的Inner類即Outer類的內(nèi)部類:第3章訪問權(quán)限修飾符包要理解訪問權(quán)限修飾符,首先需要掌握包的概念。包在物理上是文件夾,在邏輯上是有邏輯關(guān)系的類的集合。包的作用有兩個方面:①避免類重名;②控制訪問權(quán)限。要為一個類指定包,在類文件的第一行用package語句聲明即可。如以下代碼:Java程序中的類、屬性、方法都需要使用訪問權(quán)限修飾符,本章將詳細(xì)講解訪問權(quán)限修飾符的使用。上述代碼中,使用packagecom.etc.chapter03語句指定了包。編譯Employee后,其類文件將被編譯在com/etc/chapter03目錄下。包名是名稱空間的一部分,也就是說,Employee類的名稱將不再是Employee,而是com.etc.chapter03.Employee。如果在其他包里調(diào)用Employee類,需要使用import語句將其引入。如以下代碼:第3章訪問權(quán)限修飾符4種訪問權(quán)限修飾符Java語言有4種訪問權(quán)限修飾符,權(quán)限從大到小依次如下。1.公共權(quán)限:public此種權(quán)限可修飾類、屬性、方法;可以被任意類訪問。2.受保護的權(quán)限:protected此種權(quán)限可修飾屬性、方法;可以被同包類訪問,如果不是同包類,則必須是該類的子類才可以訪問。3.同包權(quán)限:default此種權(quán)限可修飾類、屬性、方法,并不使用關(guān)鍵字default,意思是不寫訪問權(quán)限修飾符時,默認(rèn)情況下的權(quán)限;只能被同包類訪問。4.私有權(quán)限:private此種權(quán)限可修飾屬性、方法;只能在本類中訪問??梢?,類(專指外部類)只可以使用同包權(quán)限或公共權(quán)限,而屬性、方法卻可以使用4種權(quán)限中的任意一個。第3章訪問權(quán)限修飾符封裝性封裝性是一種信息隱藏技術(shù),往往有兩個含義:①對象的全部屬性和全部方法結(jié)合在一起,形成一個不可分割的獨立單位;②盡可能隱藏對象的內(nèi)部結(jié)構(gòu)。具體表現(xiàn)是,在Java類中,屬性都盡量使用private權(quán)限,這樣可以保證屬性不會被任意修改;而對屬性的操作都封裝到方法中,方法往往使用public權(quán)限。如以下代碼:第4章數(shù)據(jù)類型基本數(shù)據(jù)類型基本數(shù)據(jù)類型不需要通過new關(guān)鍵字來創(chuàng)建,而是可以直接賦值,數(shù)據(jù)值存放在棧(stack)內(nèi),在空間的分配和釋放上都有較高的效率。基本數(shù)據(jù)類型有4類,共8種。1.整型:byte/short/int/long整型有4種,分別為字節(jié)型(byte),長度為8位;短整型(short),長度為16位;整型(int),長度為32位;長整型(long),長度為64位。整數(shù)默認(rèn)以int類型存儲。2.浮點型:float/double浮點型有兩種,分別為單精度浮點型(float),長度為32位;雙精度浮點型(double),長度為64位。小數(shù)默認(rèn)以double類型存儲。如floatf=2.3;將有編譯錯誤,因為2.3默認(rèn)為double類型,將高精度數(shù)值直接賦給低精度變量會出現(xiàn)編譯錯誤。解決辦法有兩種:①floatf=2.3f;這種方式使用后綴f指定2.3的類型為float;②floatf=(float)2.3;這種方式稱為強制類型轉(zhuǎn)換,強制將2.3轉(zhuǎn)換為float類型。3.字符型:char字符型用于表示一個單一的字母,在Java語言中不常用,一般使用單引號包含字母,如charc='a';。4.邏輯型:boolean邏輯型也叫布爾型,有兩個值,分別是true(表示真)和false(表示假)。需要注意的是,在Java語言中,0和1不再表示邏輯值,僅表示數(shù)值。Java語言中的基本數(shù)據(jù)類型長度都是固定的,不會隨著平臺不同而改變。第4章數(shù)據(jù)類型引用類型第4章數(shù)據(jù)類型字符串類型字符串(String)是常用的數(shù)據(jù)類型,那么String到底是什么類型?首先需要明確的是,String是引用類型,即String類型的變量都是對象,而不是基本數(shù)據(jù)類型。但是String可以像基本數(shù)據(jù)類型那樣直接使用=賦值,如Strings="hello";。String是JavaAPI中的類,屬于java.lang包,該類提供了多個構(gòu)造方法,所以String對象也可以與其他類型的對象一樣,通過使用new關(guān)鍵字調(diào)用構(gòu)造方法來創(chuàng)建,如Strings=newString("hello");。要真正理解String類,首先要明確String類是一個不可變(immutable)類,所謂不可變類,即實例在初始化賦值后,就不能被修改。如Strings1="hello";,s1被賦值為hello,在整個生命周期內(nèi)該值無法被修改,即使使用s1="world";,賦值也并不是將hello替代為world,而是將新的實例world重新賦值給s1引用,s1不再引用hello。第4章數(shù)據(jù)類型包裝器類型在API的java.lang包中有8個類,即Byte、Short、Integer、Long、Float、Double、Character、Boolean。這8個類對應(yīng)8個基本數(shù)據(jù)類型,可以將每種基本數(shù)據(jù)類型包裝成引用類型,稱為包裝器(wrapper)類型。JDK5.0及以后版本實現(xiàn)了自動裝箱、自動拆箱,基本數(shù)據(jù)類型和包裝器類型可以直接轉(zhuǎn)換。如以下代碼:第4章數(shù)據(jù)類型值傳遞面向?qū)ο蟮南到y(tǒng)依靠對象之間互相協(xié)作調(diào)用對象的方法來實現(xiàn)業(yè)務(wù)功能。很多方法都有形式參數(shù),調(diào)用時就需要將實際參數(shù)賦給形式參數(shù),可以理解為值傳遞的本質(zhì)就是賦值的過程,是將實際參數(shù)賦給形式參數(shù)的過程。1.基本數(shù)據(jù)類型:傳遞的是復(fù)制的值基本數(shù)據(jù)類型之間進(jìn)行賦值時,僅僅對值(value)進(jìn)行復(fù)制。2.引用類型:傳遞的是引用引用類型變量之間是對引用(reference)進(jìn)行賦值。第5章高級類特性static修飾符static被稱為靜態(tài),可以用來修飾類的屬性或方法,本節(jié)詳細(xì)介紹static屬性和方法的作用及使用。1.static屬性如果類的某個屬性,不管創(chuàng)建多少個對象,其存儲空間只有唯一的一個,那么這個屬性就應(yīng)該用static修飾,被稱為靜態(tài)屬性或類屬性。static屬性是類的所有對象共享的屬性,即不管創(chuàng)建了多少個對象,靜態(tài)屬性在內(nèi)存中只有一個。static屬性可以用對象調(diào)用,也可以直接用類名調(diào)用。Employee類的count屬性用來保存Employee類的對象的個數(shù),該屬性是Employee類的所有對象共享的屬性,所以被聲明為static屬性,在內(nèi)存中只有一個count,每次創(chuàng)建對象都對同一個count加1。不用static修飾的屬性稱為實例屬性,每創(chuàng)建一個對象都會為該對象初始化一個實例屬性。2.static方法如果某個方法不需要與某個特定的對象綁定,那么該方法可以使用static修飾。static方法可以用對象調(diào)用,也可以直接用類名調(diào)用。3.總結(jié)static可以修飾類的屬性和方法,稱為靜態(tài)屬性、靜態(tài)方法,或者類屬性、類方法。static屬性和方法都不再與某個對象綁定,而是所有對象共享,所以可以用對象名或類名調(diào)用靜態(tài)屬性和方法。實際開發(fā)中,多數(shù)情況都直接用類名調(diào)用靜態(tài)屬性和方法。非靜態(tài)屬性和方法都必須與某個特定對象綁定,隨著對象的創(chuàng)建而被初始化,只能用某個特定對象調(diào)用。由于非靜態(tài)屬性和方法都是與某個特定對象相關(guān)的,所以要保證程序正常運行,就要保證調(diào)用的每個非靜態(tài)屬性和方法都很明確其屬于哪個對象。而靜態(tài)方法不屬于任何一個對象,所以不能直接使用非靜態(tài)屬性和方法。final修飾符final修飾符的使用范圍較廣,可以修飾類、屬性、方法。本節(jié)先介紹final屬性,final類和final方法均與繼承有關(guān),參見后續(xù)章節(jié)。final修飾屬性,屬性就由變量成為常量,分為編譯期常量和運行期常量兩種。1.編譯期常量編譯期常量在聲明的同時必須賦值,且賦值后不能改變。2.運行期常量運行期常量在聲明時不初始化,而在運行期初始化,并且初始化后不能修改。第5章高級類特性Java類中的變量總結(jié)根據(jù)聲明位置不同,Java類中的變量可分為兩種:①在類中聲明的變量,稱為屬性或數(shù)據(jù)成員;②在方法中聲明的變量,稱為局部變量或臨時變量。下面從各個方面比較兩種變量的不同。1.作用域?qū)傩缘淖饔糜驗檎麄€類;局部變量的作用域為聲明該變量的方法或代碼塊。2.生命周期屬性分為非靜態(tài)屬性和靜態(tài)屬性兩種,非靜態(tài)屬性隨著對象創(chuàng)建而被初始化,直到對象被銷毀才被回收,靜態(tài)屬性隨著類加載而被初始化,類被銷毀才被回收;局部變量在調(diào)用方法時被臨時初始化,方法返回即被回收。3.初始化屬性可以在聲明的時候不賦初值,創(chuàng)建對象的時候自動初始化,根據(jù)數(shù)據(jù)類型不同賦不同的初始值,其中整型為0,浮點型為0.0,布爾型為false;局部變量不能自動初始化,必須在聲明的時候賦初值才能被使用,否則將發(fā)生編譯錯誤。4.訪問權(quán)限屬性可以使用任何一種訪問權(quán)限修飾符,往往使用private權(quán)限;局部變量不能使用訪問權(quán)限修飾符。5.static屬性可以使用static修飾成類屬性,類中的所有對象共享;局部變量不能使用static修飾。6.final屬性和局部變量均可以使用final修飾,使得變量成為常量。第5章高級類特性操作符1.算術(shù)操作符算術(shù)操作符可以對基本數(shù)據(jù)類型進(jìn)行數(shù)學(xué)運算,包括加(+)、減(-)、乘(*)、除(/)、取余(%)、自加(++)、自減(--)。加、減、乘、除、取余都很簡單,在此詳細(xì)講解自加、自減。++或--可以對變量進(jìn)行自加1、自減1的運算,如++或--在變量后,則“先取值后運算”;如在變量前,則“先運算后取值”。其中運算的意思是對變量加1或減1,取值的意思是將變量當(dāng)前值賦給表達(dá)式。2.位操作符位操作符作用于基本數(shù)據(jù)類型的二進(jìn)制位,包括與(AND)&,或(OR)|,異或(XOR)^,取反(NOT)~,移位操作符<<、>>>、>>。運算規(guī)則如下。(1)&:兩個輸入位都為1,輸出1。(2)|:任何一個輸入位為1,輸出1。(3)^:兩個輸入位不同,輸出1。(4)~:輸入位為1,輸出0;輸入位為0,輸出1。(5)移位操作符有3種。3.比較操作符比較操作符可以對兩個操作數(shù)進(jìn)行比較,返回值為布爾值,即true或false。大多數(shù)比較操作符只能作用于基本數(shù)據(jù)類型。比較操作符有>、<、==、!=、>=、<=共6種。對基本數(shù)據(jù)類型進(jìn)行比較,即對數(shù)值的二進(jìn)制進(jìn)行比較。4.邏輯操作符Java語言中的邏輯操作符對布爾類型的數(shù)據(jù)進(jìn)行運算,有&、|、&&、||共4種。其中&和&&的返回值規(guī)則相同,兩個操作數(shù)都是true才返回true

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論