Java程序設(shè)計(jì)及應(yīng)用_第1頁
Java程序設(shè)計(jì)及應(yīng)用_第2頁
Java程序設(shè)計(jì)及應(yīng)用_第3頁
Java程序設(shè)計(jì)及應(yīng)用_第4頁
Java程序設(shè)計(jì)及應(yīng)用_第5頁
已閱讀5頁,還剩113頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院1第一講主要內(nèi)容了解計(jì)算機(jī)語言的基本知識了解Java環(huán)境了解面向?qū)ο蠹夹g(shù)與UML了解本課程學(xué)習(xí)的主要內(nèi)容了解如何學(xué)習(xí)Java搭建Java運(yùn)行環(huán)境2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院2Java是什么Java是一個統(tǒng)稱,它包括豐富的內(nèi)容:Javaisasimple,object-oriented,distributed,interpreted,robust,secure,architecture-neutral,portable,high-performance,multi-threaded,anddynamiclanguage.(1)Java語言規(guī)范;(2)Java虛擬機(jī);(JVM)(3)Java類庫和應(yīng)用程序;(4)Java相關(guān)技術(shù):EJB,J2EE,J2ME,CORBA等2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院3Java類庫Classes(類)包含完成某項(xiàng)任務(wù)的方法(methods)當(dāng)任務(wù)完成時返回信息用于創(chuàng)建Java程序Java類庫(classlibraries)可以看成是JavaAPIs(ApplicationProgrammingInterfaces)2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院4一個典型的Java程序開發(fā)過程Java程序通常經(jīng)歷5個階段:Edit(編輯)程序員書寫代碼并保存到磁盤上Compile(編譯)編譯器生成字節(jié)碼bytecodes

Load(裝入)類裝載器(Classloader)在內(nèi)存中保存字節(jié)碼Verify(校驗(yàn))校驗(yàn)器Verifier保證字節(jié)碼不違反安全規(guī)則Execute(執(zhí)行)解釋器將字節(jié)碼翻譯成機(jī)器碼2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院5第二講主要內(nèi)容常量與變量數(shù)據(jù)類型字符串運(yùn)算符控制結(jié)構(gòu)2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院6Java對標(biāo)識符的規(guī)范規(guī)范標(biāo)識符的重要性:

沒有規(guī)范的命名不是一個科班出身的軟件開發(fā)者應(yīng)有的行為Java標(biāo)識符規(guī)范:類名稱:Mammal函數(shù)名和變量名:getAge

與C/C++不一樣常量:MAX_HEIGHT2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院7常量用保留字final來實(shí)現(xiàn) 如:finalintPI=3.14;2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院8數(shù)據(jù)類型

整型:byte(8),short(16),int(32),long(64)獨(dú)立于平臺(不同于C++)

浮點(diǎn)型:float(32),double(64) 123.456=1.23456e+2

布爾型:true,false

字符型:‘a(chǎn)’,’A’

字符串:“Hello,China”

復(fù)合數(shù)據(jù)類型:class,interface2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院9字串轉(zhuǎn)為數(shù)字

number1=Integer.parseInt(firstNumber);

number2=Integer.parseInt(secondNumber);Integer.parseInt方法將String

轉(zhuǎn)為數(shù)字

(int)類Integer

屬于包java.langInteger.parseInt

方法返回的值神通傳給變量number1

記住number1

是int類型的2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院10選擇結(jié)構(gòu)單入口,單出口當(dāng)條件滿足時執(zhí)行某個語句grade>=60truefalseprint“Passed”DecisionSymbol2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院11grade>=60trueprint“Failed”falseprint“Passed”選擇結(jié)構(gòu)2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院12循環(huán)結(jié)構(gòu)當(dāng)條件為true時反復(fù)執(zhí)行某個語句(1)計(jì)數(shù)器循環(huán)(2)次數(shù)不定的循環(huán)(使用哨兵)2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院13第三講主要內(nèi)容類與對象概述類的聲明

★類成員的訪問控制

★★使用對象實(shí)例靜態(tài)成員

★★完整的類聲明2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院14數(shù)組的概念和特點(diǎn)數(shù)組是用一個共有名稱引用相同類型變量的集合。數(shù)組用途廣泛,因?yàn)樗鼈兲峁┝艘环N把相關(guān)變量集合在一起的便利方法。數(shù)組的主要優(yōu)勢在于它用一種可以輕松操作數(shù)據(jù)的方法把數(shù)據(jù)組織起來。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院1515數(shù)組的聲明和使用數(shù)組是一個變量,用于將相同數(shù)據(jù)類型的數(shù)據(jù)存儲在存儲單元中。數(shù)組用途廣泛,因?yàn)樗鼈兲峁┝艘环N把相關(guān)變量集合在一起的便利方法。數(shù)組的主要優(yōu)勢在于它用一種可以輕松操作數(shù)據(jù)的方法把數(shù)據(jù)組織起來。可以使用以下三種方式聲明數(shù)組:數(shù)據(jù)類型[]數(shù)組名;數(shù)據(jù)類型[]數(shù)組名=new數(shù)據(jù)類型[大小];數(shù)據(jù)類型[]數(shù)組名={值1,值2,…值N};2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院16一維數(shù)組示例一維數(shù)組聲明/*數(shù)組初始化*/

int[]nums={10,20,30};/*輸出數(shù)組元素*/System.out.println("位置3的值為:"+nums[2]);int[]numbers={5,23,4,8,11,17};System.out.println("數(shù)組中元素的總數(shù)為:"+numbers.length);System.out.println("數(shù)組中的第一個元素為:"+numbers[0]);System.out.println("數(shù)組中的最后一個元素為:"+numbers[numbers.length-1]);訪問數(shù)組元素使用length屬性2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院17二維數(shù)組語法 數(shù)據(jù)類型[][]數(shù)組=new數(shù)據(jù)類型[行大小][列大小]2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院183.1類與對象概述類:描述實(shí)體抽象概念

成員:數(shù)據(jù)成員+方法成員 數(shù)據(jù)成員:實(shí)體的屬性 方法成員:實(shí)體的行為 實(shí)體的約束只能隱式地表達(dá)在屬性或行為中。對象:描述實(shí)體具體個體2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院19面向?qū)ο蟪绦蛟O(shè)計(jì)是一個建模過程2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院203.2

類的聲明數(shù)據(jù)成員

描述實(shí)體的屬性。 變量的聲明與初始化方法成員

描述實(shí)現(xiàn)的行為。 方法的聲明2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院21四種訪問控制public 這些成員能由所有的類訪問。protected 這些成員只能由派生類或同一程序包中的類訪問。 對其他程序包的派生類而言,效果相當(dāng)于public。 對其他程序包的非派生類而言,效果相當(dāng)于private。default 不加綴任何訪問控制保留字,又稱friendlyaccess或packageaccess。 這些成員只能由同一程序包(包括默認(rèn)程序包)中的類訪問。 對本程序包的類而言,效果相當(dāng)于public。 對其他程序包的類而言,效果相當(dāng)于private。private 這些成員是除自身外任何類都不允許訪問。 只有類自己的那些方法體中才可訪問這些成員。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院22深入了解對象狀態(tài)2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院232023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院24靜態(tài)成員定義靜態(tài)成員

static...靜態(tài)數(shù)據(jù)成員(類變量)

該屬性是類的屬性,而不是某一對象實(shí)例的屬性! 不管創(chuàng)建多少對象實(shí)例,該屬性只有一份(所有實(shí)例共享)。靜態(tài)方法成員(類方法) 無須創(chuàng)建任何對象實(shí)例即可使用(例如java.lang.Math類)。 直接以類名加小數(shù)點(diǎn)為前綴即可調(diào)用它們(Math.random())。 方法體中只能引用靜態(tài)數(shù)據(jù)成員或調(diào)用靜態(tài)方法成員!2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院25完整的類聲明

2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院26第四講主要內(nèi)容Java語言的對象模型變量的生存期★★JVM存儲空間組織★對象實(shí)例的初始化★★★對象實(shí)例的收尾★★★Java語言的垃圾收集★★2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院27所有對象都是引用C++語言有兩種方式操縱對象 (1)以標(biāo)識符直接標(biāo)識對象: Complexc1(5,2); c1.print(); //標(biāo)識符c1代表一個對象本身 (2)通過指針以標(biāo)識符間接標(biāo)識對象: Complex*c2=newComplex(5,2); c2->print(); //標(biāo)識符c2代表一個對象的指針Java語言只有一種方式操縱對象

所有對象標(biāo)識均是對象引用: Complexc3=newComplex(5,2); c3.print();//標(biāo)識符c3代表一個對象的引用2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院28創(chuàng)建對象實(shí)例并建立與引用的關(guān)聯(lián)2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院29各種類型變量的默認(rèn)初始值2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院30構(gòu)造方法構(gòu)造方法是隱式調(diào)用的

從而在每次創(chuàng)建新的對象實(shí)例時,會強(qiáng)制執(zhí)行一次構(gòu)造方法。 ?構(gòu)造方法中由程序員自定義了想要的初始化動作。 構(gòu)造方法也可由程序員顯式地調(diào)用:僅子類構(gòu)造方法中調(diào)用父類的。構(gòu)造方法總會有的

缺省構(gòu)造方法(defaultcontructor):沒有任何參數(shù)的構(gòu)造方法。 如果程序員不提供任何構(gòu)造方法,則編譯程序自動提供一個缺省構(gòu)造方法;只要程序員提供了一個構(gòu)造方法(無論是否public、無論是否有參數(shù)),系統(tǒng)不再提供缺省構(gòu)造方法。 編譯程序提供的缺省構(gòu)造方法只做一件事:調(diào)用父類的缺省構(gòu)造方法。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院314.6Java語言的垃圾收集垃圾收集影響到應(yīng)用程序的穩(wěn)定性

內(nèi)存分配、內(nèi)存使用。垃圾收集影響到應(yīng)用程序的性能2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院32字符串掌握Character類的使用掌握String類(重點(diǎn)、難點(diǎn))

掌握StringBuffer類(重點(diǎn)、難點(diǎn))

2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院33一、Character類的方法方法說明isDigit()確定字符是否為0至9之間的數(shù)字isLetter()確定字符是否為字母isLowerCase()確定字符是否為小寫形式isUpperCase()確定字符是否為大寫形式isSpace()確定字符是否為空格或換行符2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院34String類的構(gòu)造方法構(gòu)造方法說明String()它將創(chuàng)建一個空字符串 String(Stringvalue)它將新建一個字符串作為指定字符串的副本String(char[]value)它將根據(jù)字符數(shù)組構(gòu)造一個新字符串String(byte[]value)它將通過轉(zhuǎn)換指定的字節(jié)數(shù)組新建一個字符串2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院35字符串的長度lenth()字符串的比較==orequals()字符串的搜索indexOf()2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院36提取字符串方法說明publiccharcharAt(intindex)此方法用于從指定位置提取單個字符,該位置由索引指定,索引中的值必須為非負(fù)publicStringsubstring(intindex)此方法用于提取從位置索引開始的字符串部分publicStringsubstring(int

beginindex,int

endindex)此方法用于提取

beginindex

和endindex

位置之間的字符串部分publicStringconcat(String

str)此方法用于連接兩個字符串,并新建一個包含調(diào)用字符串的字符串對象publicStringreplace(charold,charnew)此方法用于將調(diào)用字符串中出現(xiàn)某個字符的所有位置都替換為另一個字符publicStringtrim()此方法用于返回一個前后不含任何空格的調(diào)用字符串的副本2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院37StringBuffer

類2-1構(gòu)造方法說明publicStringBuffer()保留16個字符的空間publicStringBuffer(intlength)設(shè)置緩存器大小publicStringBuffer(Stringvalue)接收字符串參數(shù),用來設(shè)置初始內(nèi)容,并在不重新分配的情況下保留16個字符的空間

StringBuffer

用于表示可以修改的字符串使用連接運(yùn)算符(+)的字符串會自動創(chuàng)建字符串緩沖對象2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院38StringBuffer

類2-2方法說明StringBufferinsert(Strings)在指定位置插入布爾值的字符串表示intlength()確定StringBuffer

對象的長度voidsetCharAt(intpos,charch)使用ch

指定的新值設(shè)置pos指定的位置上的字符StringtoString()轉(zhuǎn)換為字符串形式StringBufferreverse()保留StringBuffer

對象中的字符StringBufferdelete(intstart,intend)此方法將刪除調(diào)用對象中從start位置開始直到end指定的索引–1位置的字符序列StringBufferdeleteCharAt(intpos)此方法將刪除pos指定的索引處的字符StringBufferreplace(intstart,intend,Strings)此方法使用一組字符替換另一組字符。將用替換字符串從start指定的位置開始替換,直到end指定的位置結(jié)束2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院39第五講主要內(nèi)容軟件復(fù)用及其途徑繼承:泛化的實(shí)現(xiàn)★★繼承中的對象初始化與收尾★★★多繼承與重復(fù)繼承Object類2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院40實(shí)現(xiàn)代碼復(fù)用的兩條途徑代碼復(fù)用的基本單位──類∕接口復(fù)用類與接口的兩條途徑

①聚合(aggregation)或合成(composition)

②泛化(generalization)或繼承(inheritance)

2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院41類復(fù)用──合成方式UML圖示 二元關(guān)系:帶有實(shí)心菱形表示整體(whole),另一方表示部分(part)。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院42類復(fù)用──繼承方式UML圖示

二元關(guān)系:帶有三角形一方表示父類,另一方表示子類。 ?(直接)父類、祖先類、(直接)子類、派生類(后代類)、...2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院43建模思想

泛化或繼承是日常生活中is-a關(guān)系的實(shí)現(xiàn)。繼承在面向?qū)ο笤O(shè)計(jì)中的地位

是面向?qū)ο笤O(shè)計(jì)的重要特征。 ?封裝、信息隱藏、數(shù)據(jù)抽象、多態(tài)性、... 是運(yùn)行時多態(tài)性的基礎(chǔ)。 ?子類型(動態(tài)類型+靜態(tài)類型) ?綁定(動態(tài)綁定+靜態(tài)綁定)2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院44因?yàn)槔^承而新增了一種訪問控制方式

原有的訪問控制方式: private?public 新的訪問控制方式: private?protected?public2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院45類型兼容

向上轉(zhuǎn)換(upcasting):又稱wideningreferenceconversion。 ?S→T,S是T的子類(注意Object是所有類的父類?。? ?不需要運(yùn)行時檢測,允許隱式轉(zhuǎn)換。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院46對象的初始化次序先初始化子對象,再初始化對象本身

子對象的初始化: ?缺省初始值、初始化表達(dá)式、初始化塊、構(gòu)造方法。 對象本身的初始化: ?缺省初始值、初始化表達(dá)式、初始化塊、構(gòu)造方法。 注意類變量的初始化是在類裝載時完成的,與創(chuàng)建對象實(shí)例無關(guān)。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院472023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院482023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院492023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院502023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院51單一根類的類層次單一根類的層次結(jié)構(gòu)(singly-rootedhierarchy) 是純面向?qū)ο笳Z言的一個重要特征。 ?Java語言的根對象是Object。 ?C++語言沒有根對象,不如Java語言“純”。單一根類的好處

使語言更加簡單且更加靈活。 ?幫助實(shí)現(xiàn)多態(tài)的數(shù)據(jù)結(jié)構(gòu)(結(jié)合RTTI)。 ?垃圾收集程序可統(tǒng)一執(zhí)行對象收尾任務(wù)(調(diào)用finalize())。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院52第六講內(nèi)容簡介多態(tài)性編譯時多態(tài)性

★★運(yùn)行時多態(tài)性

★★★2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院536.1多態(tài)性什么是多態(tài)性(polymorphism)?

通俗解釋:一個名字具有多種含義。為什么程序需要多態(tài)性? 表示獨(dú)立性可提高程序的可擴(kuò)展性與可復(fù)用性。實(shí)現(xiàn)多態(tài)性有何途徑? 數(shù)據(jù):隱式類型轉(zhuǎn)換+強(qiáng)制類型轉(zhuǎn)換。 操作:重載+動態(tài)綁定。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院542023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院552023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院56方法重載編譯器如何選擇合適的操作

參數(shù)表(基調(diào))必須(must)有區(qū)別; 返回類型可以(can)不同。根據(jù)實(shí)參與形參的匹配可在編譯時靜態(tài)地綁定2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院572023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院586.3運(yùn)行時多態(tài)性2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院592023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院60Employeewho=newManager();who.getDetails();動態(tài)類型靜態(tài)類型多態(tài)性:運(yùn)行環(huán)境自動選擇調(diào)用哪個方法體。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院61重定義vs

重載Overridingvs

Overloading 共同點(diǎn):同一方法名表達(dá)不同含義。 重載:子類的方法之間以及子類與父類的方法之間均允許重載。 ?參數(shù)表──必須有不同。 ?返回類型、異常表──可同,也可不同(即無要求)。 重定義:僅指子類重定義與父類或祖先類的方法。 ?參數(shù)表、返回類型──必須完全相同。 ?異常表──聲明拋出的異常必須兼容。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院62重定義的注意事項(xiàng)

①返回類型必須與父類的方法完全相同。

②只能拋出那些父類方法聲明拋出的異常。 ?允許少拋或不拋異常,但禁止拋出父類接口不兼容的異常。

③訪問控制必須比父類方法更公開。 ?private?default?protected?public2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院63第七講主要內(nèi)容抽象類★★接口★★★嵌套類概述成員類

★★★局部類

★匿名類

★2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院647.1抽象類抽象方法

僅定義了接口、沒有提供實(shí)現(xiàn)的那些方法。 ?這些抽象方法有待于子類的“重定義”。抽象類

含有至少一個抽象方法的類。 ?這些抽象方法有待于子類的“繼承”。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院65Java語言的接口接口的操作:在接口中只允許定義抽象方法

所有方法都不可提供方法體。 保留字abstract可寫、可不寫。 ?相當(dāng)于默認(rèn)的修飾符為abstract。 ?接口中定義的方法禁止使用修飾符static。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院662023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院67接口vs

類型一個接口定義了一種引用類型

與類不同的是這種類型不可用于創(chuàng)建具體的對象實(shí)例。

其作用主要用于多態(tài)性 多態(tài)性:重定義+動態(tài)綁定。 例:設(shè)具體類C實(shí)現(xiàn)了接口S和T,則有:

Sobj=newC(...); Tobj=newC(...);2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院687.3

嵌套類概述 top-levelclassclass memberclass staticclass nestedclass localclass anonymousclass innerclass2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院69第八講主要內(nèi)容Java程序的用戶界面Swing組件概述Swing頂層容器★★Swing中間容器★★Swing原子組件★★2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院708.1

Java程序的用戶界面文本命令行

又稱控制臺(console)交互方式。圖形用戶界面(GUI):AWT/Swing

在圖形用戶界面中也可結(jié)合命令行方式。瀏覽器:Browser

在J2EE規(guī)范中得到較好支持(JSP/Servlet)。Applet:GUI+Browser2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院718.3Swing頂層容器頂層容器

Swing提供了3種常用的頂層容器類: ?JFrame、JDialog和JApplet。 每一GUI組件都須加入一個以頂層容器為根的包容層次。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院728.4Swing中間容器常用的中間容器(通用容器) ①面板:JPanel ②滾動窗格:JScrollPane ③分割窗格:JSplitPane ④帶標(biāo)簽窗格:JTabbedPane ⑤工具條:JToolBar2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院73簡單的Swing基本控件GUI應(yīng)用中的簡單控件標(biāo)簽、按鈕、檢查框、廣播按鈕、組合框、列表、文本組件、微調(diào)、滑桿、邊框、...2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院74第九講主要內(nèi)容使用布局管理器★★事件驅(qū)動編程

★★★編寫Applet程序★2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院759.1

布局管理器為什么需要布局管理器?各種布局管理器的用法BorderLayout、FlowLayout、GridLayout、BoxLayout、CardLayout不使用布局管理器時的絕對定位2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院76BorderLayout布局管理器在同一個方位不要同時放兩個組件??芍付ńM件之間的空隔。 ?使用BorderLayout(int

hGap,int

vGap) ?使用voidsetHgap(int)或voidsetVgap(int)2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院77FlowLayout布局管理器2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院78GridLayout布局管理器將容器中的所有組件放在一個格中。 ?每一組件占據(jù)整個格單元的空間。在構(gòu)造方法中指定格大小以及組件之間的空隔。publicGridLayout(introws,intcolumns)publicGridLayout(introws,intcolumns,int

horizontalGap,int

verticalGap)2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院79BoxLayout布局管理器

容器中的組件要么上下疊起,要么左右緊靠。 在實(shí)際應(yīng)用中常常將多個使用BoxLayout的容器組合在一起。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院80CardLayout布局管理器

支持容器中的兩個或多個組件共享同一空間。 在同一位置放置的組件只有一個可見。 ?可指定組件名或遍歷組件等方式指定顯示哪一組件。cards:內(nèi)有按鈕組與文本字段兩個組件2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院81事件處理程序的實(shí)現(xiàn)技術(shù) 每一個事件處理程序需要3個代碼片段: ①聲明事件處理類時,要么指定實(shí)現(xiàn)一個監(jiān)聽器接口,要么繼承一個實(shí)現(xiàn)了監(jiān)聽器接口的類。例如:

publicclassMyClassimplementsActionListener{...} ②將事件處理類的一個實(shí)例注冊到一個或多個組件作為監(jiān)聽器。例如:

someComponent.addActionListener(instanceOfMyClass); ③實(shí)現(xiàn)監(jiān)聽器接口指定的方法。例如: publicvoidactionPerformed(ActionEvent

evt){ ...//對動作事件進(jìn)行處理的代碼 }2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院82使用適配器2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院83第十講主要內(nèi)容Java語言的異常處理★捕獲和處理異?!铩飫?chuàng)建用戶自己的異常類★2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院84異常處理的控制結(jié)構(gòu)try{

statementSequence}catch(parameter){

statementSequence}catch(...){ ...}catch(parameter){

statementSequence}finally{

statementSequence} //此結(jié)構(gòu)類似于Switch-case-default2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院85Java.lang.Throwable2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院86異常的處理①拋出:一個異常對象被顯式(new運(yùn)算符)或隱式地(JVM)創(chuàng)建。

?異常對象類似于其他對象,也要用new創(chuàng)建 ②捕獲:程序控制流轉(zhuǎn)向異常處理程序(ExceptionHandler)。 ?允許有多個重載的異常處理程序。 ?控制流根據(jù)異常對象的類型匹配重載的異常處理程序。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院872023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院88

2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院89異常的類型匹配 不同類型的catch塊語句的次序是有意義的!

典型用法:異常的子類必須放在其所有祖先類之前! ?否則,這些子類的catch部分永遠(yuǎn)不可能捕獲一個異常。 ?并且,這些不可達(dá)代碼還會導(dǎo)致一個編譯錯誤。

exception...hasalreadybeencaught2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院902023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院91第九講輸入輸出流流式輸入輸出文件流過濾器流隨機(jī)訪問文件串行化2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院922023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院93字節(jié)流vs

字符流字節(jié)流

字節(jié)流是由字節(jié)組成的流的抽象。 是一種無類型的流(untypedstream),流中的數(shù)據(jù)全部是8位的字節(jié)。

字符流 字節(jié)流是由字符組成的流的抽象。 是一種有類型的流(typedstream),其類型為16位的字符。

字符流中的字符采用Unicode編碼。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院94InputStream

vs

Reader

InputStream

:byte作為基類型 Reader:char作為基類型OutputStream

vsWriter

OutputStream

:byte作為基類型 Writer :char作為基類型字節(jié)流VS字符流2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院95各種流的常用方法參看書上所說2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院96文件流File類

File(Stringpath):path表示文件目錄

File(Stringpath,Stringname):name表示文件名

File(Filedir,Stringname):使用另一個File對象創(chuàng)建

getName():返回文件或目錄名

getPath():返回文件或目錄路徑

list():將目錄中所有文件名列出來

delete():刪除文件

mkdir():創(chuàng)建當(dāng)前目錄的子目錄2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院972023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院982023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院992023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院100過濾流

BufferedReaderin=newBufferedReader(

newInputStreamReader(System.in)); StringinputLine=in.readLine();類似C/C++的簡單輸入語句。一定要記住。 過濾流的主要特點(diǎn)是在輸入輸出數(shù)據(jù)的同時能對所傳輸?shù)臄?shù)據(jù)做指定類型的格式的轉(zhuǎn)換,即可實(shí)現(xiàn)對二進(jìn)制字節(jié)數(shù)據(jù)的理解和編碼轉(zhuǎn)換2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院101過濾流之一:緩沖流過濾流之二:數(shù)據(jù)轉(zhuǎn)換流過濾器流之三:帶行號的輸入流2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院102第十二講持有對象對象容器Java類庫的容器類★★★列表容器(List)★集合容器(Set)★映射容器(Map)★其他容器容器操縱工具★2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院103Java類庫中的所有容器均只能存放Object

無法直接容納基本類型(數(shù)組可以)。 ?這是容器類與數(shù)組的重要區(qū)別之一! ?容器類相當(dāng)于基類型為Object的數(shù)組Object[]。

基本類型的數(shù)據(jù)可以通過其包裝類(wrapper)放在對象容器中。 ?為每一基本類型都提供一包裝類,從而完善整個單根類層次。2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院104instanceof運(yùn)算符2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院105Java對象容器的分類

List 列表 Collection 類集 Container Set 容器 集合 Map 映射全部位于程序包java.util之中2023/11/21北理珠海學(xué)院計(jì)算機(jī)學(xué)院106容器的特征因素是否允許重復(fù)元素 ?對于類集(collection)而言,集合(set)不允許重復(fù)元素,列表(list)允許。 ?對于映射(map)而言,不允許有重復(fù)的關(guān)鍵碼。容器中的元素是否排序 ?列表(list):本身就是一種次序(以下標(biāo)位置為序) 工具類Collections提供了對列表排序的方法sort()。 ?集合(set):派生出有序集(

溫馨提示

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

評論

0/150

提交評論