《Java程序設(shè)計(jì)及移動(dòng)APP開發(fā)》課件-第09章_第1頁(yè)
《Java程序設(shè)計(jì)及移動(dòng)APP開發(fā)》課件-第09章_第2頁(yè)
《Java程序設(shè)計(jì)及移動(dòng)APP開發(fā)》課件-第09章_第3頁(yè)
《Java程序設(shè)計(jì)及移動(dòng)APP開發(fā)》課件-第09章_第4頁(yè)
《Java程序設(shè)計(jì)及移動(dòng)APP開發(fā)》課件-第09章_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第9章Java中的常見類庫(kù)0102039.1Java類庫(kù)的結(jié)構(gòu)9.2異常處理9.3思考和練習(xí)Java類庫(kù)中常用的類和接口如下:java.io:系統(tǒng)輸入和輸出。java.utl:日期、時(shí)間、國(guó)際化等各種實(shí)用工具類。java.swing.*:一組輕量級(jí)組件。java.sql:數(shù)據(jù)源數(shù)據(jù)的API。:網(wǎng)絡(luò)通信應(yīng)用類。java.math:數(shù)學(xué)運(yùn)算類。java.lang:程序設(shè)計(jì)基礎(chǔ)類。java.awt:用戶界面和圖形圖像類。java.applet:Java里嵌入的HTML文檔中的、可以在瀏覽器運(yùn)行的小程序。9.1Java類庫(kù)的結(jié)構(gòu)39.2.1System類System類是一個(gè)特殊類,他是一個(gè)公共最終類,不能被繼承,也不能被實(shí)例化,也就是說不能使用System類定義對(duì)象。System類中所有的變量和方法都是靜態(tài)的,使用時(shí)以System.變量名和System.方法名的方式調(diào)用。前面章節(jié)中使用了許多System.out.print()和System.out.println()語句,實(shí)際上這里就是使用System類的方法。9.2常用類System類包含3個(gè)經(jīng)常使用的公共數(shù)據(jù)流,分別是標(biāo)準(zhǔn)輸入(in)、標(biāo)準(zhǔn)輸出(out)和標(biāo)準(zhǔn)錯(cuò)誤(err)。in屬性是InputStream類的一個(gè)對(duì)象,它是未經(jīng)包裝的原始類InputStream,可以通過System.in.read()方法讀取字節(jié)數(shù)據(jù)實(shí)現(xiàn)標(biāo)準(zhǔn)輸入,例如:chari=(char)System.in.read();out和err都是被包裝成InputStream對(duì)象,所以可以直接使用System.out和System.err方法調(diào)用。例如,可以使用下面的方法完成各種數(shù)據(jù)類型的輸出:System.out.print("num="+num+"\n");或者:System.out.println("num="+num);9.2常用類9.2.2Math類Math類提供了很多數(shù)學(xué)運(yùn)算,包括幾何、三角以及常用的數(shù)學(xué)函數(shù)。前面章節(jié)中使用了許多System.out.print()和System.out.println()語句,實(shí)際上這里就是使用System類的方法。9.2常用類例如,下面是輸入兩個(gè)數(shù)值,分別計(jì)算其正弦值和余弦值:packagetest;importjava.util.Scanner;publicclassclass1{ publicstaticvoidmain(Stringargs[]){System.out.println("請(qǐng)輸入兩個(gè)數(shù),輸入后回車,計(jì)算及其正弦和余弦值:"); Scannerreader=newScanner(System.in);doublex=reader.nextDouble();doubley=reader.nextDouble();System.out.println("你輸入的第一個(gè)值是"+x);System.out.println("你輸入的第二個(gè)值是"+y);doublesinx=Math.sin(x);doublecosx=Math.cos(x);doublesiny=Math.sin(y);doublecosy=Math.cos(y);System.out.println(x+"的正弦值是"+sinx);System.out.println(x+"的余弦值是"+cosx);System.out.println(y+"的正弦值是"+siny);System.out.println(y+"的余弦值是"+cosy);} }9.2常用類程序運(yùn)行結(jié)果如下:請(qǐng)輸入兩個(gè)數(shù),輸入后回車,計(jì)算及其正弦和余弦值:3.05.0你輸入的第一個(gè)值是3.0你輸入的第二個(gè)值是5.03.0的正弦值是0.14112000805986723.0的余弦值是-0.98999249660044545.0的正弦值是-0.95892427466313855.0的余弦值是0.283662185463226259.2常用類9.2.3Random類Random類主要?jiǎng)?chuàng)建新的隨機(jī)生成器。例如,生成10個(gè)1-100之間的隨機(jī)數(shù):packagetest;importjava.util.Random;publicclassclass1{ publicstaticvoidmain(Stringargs[]){Randomrand=newRandom();for(inti=1;i<=10;i++){intr0=rand.nextInt(100);System.out.println("第"+i+"個(gè)隨機(jī)數(shù)是:"+r0);}} }9.2常用類9程序運(yùn)行結(jié)果如下:第1個(gè)隨機(jī)數(shù)是:62第2個(gè)隨機(jī)數(shù)是:81第3個(gè)隨機(jī)數(shù)是:39第4個(gè)隨機(jī)數(shù)是:75第5個(gè)隨機(jī)數(shù)是:28第6個(gè)隨機(jī)數(shù)是:43第7個(gè)隨機(jī)數(shù)是:88第8個(gè)隨機(jī)數(shù)是:90第9個(gè)隨機(jī)數(shù)是:13第10個(gè)隨機(jī)數(shù)是:619.2常用類9.2.4基本數(shù)據(jù)類型的包裝9.2常用類9.2.5Vector類向量類Vector是一個(gè)動(dòng)態(tài)數(shù)組類。包含在Java.util中??梢詣?dòng)態(tài)創(chuàng)建數(shù)組。下面程序示例演示Vector的使用。包括Vector的創(chuàng)建、向Vector中添加元素、從Vector中刪除元素、統(tǒng)計(jì)Vector中元素的個(gè)數(shù)和遍歷Vector中的元素。9.2常用類12importjava.util.Vector;publicclassc1{publicstaticvoidmain(String[]args){//Vector的創(chuàng)建//使用Vector的構(gòu)造方法進(jìn)行創(chuàng)建Vectorv=newVector(4);//向Vector中添加元素//使用add方法直接添加元素v.add("Data01"); v.add("Data02"); v.add("Data03"); v.add("Data04"); v.add("Data05");//從Vector中刪除元素v.remove("Data01");//刪除指定內(nèi)容的元素v.remove(1);//按照索引號(hào)刪除元素//獲得Vector中已有元素的個(gè)數(shù)intsize=v.size();System.out.println("size:"+size);//遍歷Vector中的元素for(inti=0;i<v.size();i++){System.out.println(v.get(i));}}}9.2常用類程序運(yùn)行結(jié)果:size:3Data02Data04Data059.2常用類Vector有三個(gè)構(gòu)造函數(shù):publicVector(intinitialCapacity,intcapacityIncrement)

publicVector(intinitialCapacity)

publicVector()

9.2常用類針對(duì)經(jīng)常用到的對(duì)向量增、刪、插功能舉例描述:

addElement(Objectobj)//把組件加到向量尾部,同時(shí)大小加1,

向量容量比以前大1。insertElementAt(Objectobj,intindex)//把組件加到所定索引處,

此后的內(nèi)容向后移動(dòng)1個(gè)單位。setElementAt(Objectobj,intindex)//把組件加到所定索引處,

此處的內(nèi)容被代替。removeElement(Objectobj)//把向量中含有本組件內(nèi)容移走。removeAllElements()//把向量中所有組件移走,向量大小為0。9.2常用類16importjava.util.Vector;publicclassc1{publicstaticvoidmain(String[]args){Vectorv=newVector();v.addElement("10");v.addElement("20");v.addElement("30");v.addElement("40");v.addElement("50");//遍歷Vector中的元素for(inti=0;i<v.size();i++){System.out.println(v.get(i));}System.out.println("-----");v.insertElementAt("5",0);v.insertElementAt("25",3);v.setElementAt("100",4);for(inti=0;i<v.size();i++){ System.out.println(v.get(i));}System.out.println("-----");v.removeAllElements();for(inti=0;i<v.size();i++){ System.out.println(v.get(i));}}}9.2常用類程序運(yùn)行結(jié)果:1020304050-----51020251004050-----9.2常用類9.2.6Stack類Stack類是棧數(shù)據(jù)結(jié)構(gòu)類。棧的基本特征是先進(jìn)后出(FILO—First-In/Last-Out)。Stack棧是Vector的一個(gè)子類,它實(shí)現(xiàn)了一個(gè)標(biāo)準(zhǔn)的后進(jìn)先出的棧。9.2常用類19importjava.util.EmptyStackException;importjava.util.Stack;publicclassc1{publicstaticvoidmain(String[]args){Stack<Integer>st=newStack<Integer>();System.out.println("堆棧:"+st);showpush(st,11);showpush(st,22);showpush(st,33);showpush(st,44);showpop(st);showpop(st);showpop(st);try{showpop(st);}catch(EmptyStackExceptione){System.out.println("空棧");}}staticvoidshowpush(Stack<Integer>st,inta){st.push(newInteger(a));System.out.println("push("+a+")");System.out.println("堆棧:"+st);}staticvoidshowpop(Stack<Integer>st){System.out.print("pop->");Integera=(Integer)st.pop();System.out.println(a);System.out.println("stack:"+st);}}9.2常用類程序運(yùn)行結(jié)果:堆棧:[]push(11)堆棧:[11]push(22)堆棧:[11,22]push(33)堆棧:[11,22,33]push(44)堆棧:[11,22,33,44]pop->44堆棧:[11,22,33]pop->33堆棧:[11,22]pop->22堆棧:[11]pop->11堆棧:[]9.2常用類9.2.7Queue類Queue類是隊(duì)列數(shù)據(jù)結(jié)構(gòu)類。隊(duì)列的基本特征是先進(jìn)先出(FIFO—Firstin/Firstout),Queue類中的方法完成隊(duì)列的相關(guān)操作。Queue接口與List、Set同一級(jí)別,都是繼承了Collection接口。LinkedList實(shí)現(xiàn)了Deque接口。add

增加一個(gè)元索,如果隊(duì)列已滿,則拋出一個(gè)IIIegaISlabEepeplian異常。

remove

移除并返回隊(duì)列頭部的元素,如果隊(duì)列為空,

則拋出一個(gè)NoSuchElementException異常。

element

返回隊(duì)列頭部的元素,如果隊(duì)列為空,

則拋出一個(gè)NoSuchElementException異常。

offer

添加一個(gè)元素并返回true

,如果隊(duì)列已滿,則返回false。

poll

移除并返回隊(duì)列頭部的元素,如果隊(duì)列為空,則返回null。

peek

返回隊(duì)列頭部的元素,如果隊(duì)列為空,則返回null。

put

添加一個(gè)元素,

如果隊(duì)列滿,則阻塞。

take

移除并返回隊(duì)列頭部的元素,如果隊(duì)列為空,則阻塞。9.2常用類22importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.BlockingQueue;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;publicclassc1{publicstaticvoidmain(String[]args){c1.testBasket();} /***定義裝蘋果的籃子*/publicstaticclassBasket{//籃子,能夠容納3個(gè)蘋果BlockingQueue<String>basket=newArrayBlockingQueue<String>(3);//生產(chǎn)蘋果,放入籃子publicvoidproduce()throwsInterruptedException{//put方法放入一個(gè)蘋果,若basket滿了,等到basket有位置basket.put("Anapple");}//消費(fèi)蘋果,從籃子中取走publicStringconsume()throwsInterruptedException{//get方法取出一個(gè)蘋果,若basket為空,等到basket有蘋果為止Stringapple=basket.take();returnapple;}publicintgetAppleNumber(){returnbasket.size();}}9.2常用類//測(cè)試方法publicstaticvoidtestBasket(){//建立一個(gè)裝蘋果的籃子finalBasketbasket=newBasket();//定義蘋果生產(chǎn)者classProducerimplementsRunnable{publicvoidrun(){try{while(true){//生產(chǎn)蘋果System.out.println("生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:"+System.currentTimeMillis());duce();System.out.println("生產(chǎn)者生產(chǎn)蘋果完畢:"+System.currentTimeMillis());System.out.println("生產(chǎn)完后有蘋果:"+basket.getAppleNumber()+"個(gè)");//休眠300msThread.sleep(300);}}catch(InterruptedExceptionex){}}}9.2常用類//定義蘋果消費(fèi)者classConsumerimplementsRunnable{publicvoidrun(){try{while(true){//消費(fèi)蘋果System.out.println("消費(fèi)者準(zhǔn)備消費(fèi)蘋果:"+System.currentTimeMillis());basket.consume();System.out.println("消費(fèi)者消費(fèi)蘋果完畢:"+System.currentTimeMillis());System.out.println("消費(fèi)完后有蘋果:"+basket.getAppleNumber()+"個(gè)");//休眠1000msThread.sleep(1000);}}catch(InterruptedExceptionex){}}}ExecutorServiceservice=Executors.newCachedThreadPool();Producerproducer=newProducer();Consumerconsumer=newConsumer();service.submit(producer);service.submit(consumer);//程序運(yùn)行10s后,所有任務(wù)停止try{Thread.sleep(10000);}catch(InterruptedExceptione){}service.shutdownNow();}}9.2常用類程序運(yùn)行結(jié)果:生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094841253消費(fèi)者準(zhǔn)備消費(fèi)蘋果:1561094841253生產(chǎn)者生產(chǎn)蘋果完畢:1561094841253消費(fèi)者消費(fèi)蘋果完畢:1561094841253生產(chǎn)完后有蘋果:0個(gè)消費(fèi)完后有蘋果:0個(gè)生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094841554生產(chǎn)者生產(chǎn)蘋果完畢:1561094841554生產(chǎn)完后有蘋果:1個(gè)生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094841854生產(chǎn)者生產(chǎn)蘋果完畢:1561094841854生產(chǎn)完后有蘋果:2個(gè)生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094842154生產(chǎn)者生產(chǎn)蘋果完畢:15610948421549.2常用類生產(chǎn)完后有蘋果:3個(gè)消費(fèi)者準(zhǔn)備消費(fèi)蘋果:1561094842254消費(fèi)者消費(fèi)蘋果完畢:1561094842254消費(fèi)完后有蘋果:2個(gè)生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094842454生產(chǎn)者生產(chǎn)蘋果完畢:1561094842454生產(chǎn)完后有蘋果:3個(gè)生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094842755消費(fèi)者準(zhǔn)備消費(fèi)蘋果:1561094843254消費(fèi)者消費(fèi)蘋果完畢:1561094843254消費(fèi)完后有蘋果:3個(gè)生產(chǎn)者生產(chǎn)蘋果完畢:1561094843254生產(chǎn)完后有蘋果:3個(gè)生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094843555消費(fèi)者準(zhǔn)備消費(fèi)蘋果:1561094844254消費(fèi)者消費(fèi)蘋果完畢:1561094844254生產(chǎn)者生產(chǎn)蘋果完畢:1561094844254消費(fèi)完后有蘋果:3個(gè)生產(chǎn)完后有蘋果:3個(gè)9.2常用類消費(fèi)者準(zhǔn)備消費(fèi)蘋果:1561094845254消費(fèi)者消費(fèi)蘋果完畢:1561094845254生產(chǎn)者生產(chǎn)蘋果完畢:1561094845254消費(fèi)完后有蘋果:3個(gè)生產(chǎn)完后有蘋果:3個(gè)生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094845554消費(fèi)者準(zhǔn)備消費(fèi)蘋果:1561094846254消費(fèi)者消費(fèi)蘋果完畢:1561094846254生產(chǎn)者生產(chǎn)蘋果完畢:1561094846254消費(fèi)完后有蘋果:3個(gè)生產(chǎn)完后有蘋果:3個(gè)生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094846555消費(fèi)者準(zhǔn)備消費(fèi)蘋果:1561094847254消費(fèi)者消費(fèi)蘋果完畢:1561094847254生產(chǎn)者生產(chǎn)蘋果完畢:1561094847254生產(chǎn)完后有蘋果:3個(gè)消費(fèi)完后有蘋果:3個(gè)生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094847554消費(fèi)者準(zhǔn)備消費(fèi)蘋果:1561094848254消費(fèi)者消費(fèi)蘋果完畢:1561094848254生產(chǎn)者生產(chǎn)蘋果完畢:1561094848254消費(fèi)完后有蘋果:3個(gè)生產(chǎn)完后有蘋果:3個(gè)9.2常用類生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094848554消費(fèi)者準(zhǔn)備消費(fèi)蘋果:1561094849254消費(fèi)者消費(fèi)蘋果完畢:1561094849254消費(fèi)完后有蘋果:2個(gè)生產(chǎn)者生產(chǎn)蘋果完畢:1561094849254生產(chǎn)完后有蘋果:3個(gè)生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:1561094849554消費(fèi)者準(zhǔn)備消費(fèi)蘋果:1561094850254消費(fèi)者消費(fèi)蘋果完畢:1561094850254生產(chǎn)者生產(chǎn)蘋果完畢:1561094850254消費(fèi)完后有蘋果:3個(gè)生產(chǎn)完后有蘋果:3個(gè)生產(chǎn)者準(zhǔn)備生產(chǎn)蘋果:15610948505559.2常用類9.2.8Arrays類Arrays類是針對(duì)數(shù)組進(jìn)行操作的工具類,提供了排序,查找等功能。它是Object的子類。Arrays類成員方法有:publicstaticStringtoString(int[]a):把數(shù)組轉(zhuǎn)成字符串。int[]a可以改為其他類型的數(shù)組。publicstaticvoidsort(int[]a):將各種類型的數(shù)組進(jìn)行升序排序。publicstaticintbinarySearch(int[]a,intkey):將各種類型的

數(shù)組進(jìn)行二分查找。9.2常用類30importjava.util.Arrays;publicclassc1{publicstaticvoidmain(String[]args){//定義一個(gè)數(shù)組int[]arr={60,-35,-61,126,0,77,-31,254,-20};//publicstaticStringtoString(int[]a)把數(shù)組轉(zhuǎn)成字符串System.out.println("排序前:"+Arrays.toString(arr));//publicstaticvoidsort(int[]a)對(duì)數(shù)組進(jìn)行排序Arrays.sort(arr);System.out.println("排序后:"+Arrays.toString(arr));int[]arr2={13,24,57,69,80};//publicstaticintbinarySearch(int[]a,intkey)二分查找//binarySearch:2System.out.println("binarySearch:"+Arrays.binarySearch(arr2,57));//binarySearch:-6return-(low+1)System.out.println("binarySearch:"+Arrays.binarySearch(arr2,557));}}9.2常用類程序運(yùn)行結(jié)果:排序前:[60,-35,-61,126,0,77,-31,254,-20]排序后:[-61,-35,-31,-20,0,60,77,126,254]binarySearch:2binarySearch:-69.2常用類9.2.9Hashable類Hashable類是哈希表類。其功能就是利用哈希表存儲(chǔ)數(shù)據(jù)。哈希表(Hashtable,也叫散列表),是根據(jù)關(guān)鍵碼值(Keyvalue)而直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu)。也就是說,它通過把關(guān)鍵碼值映射到表中一個(gè)位置來訪問記錄,以加快查找的速度。這個(gè)映射函數(shù)叫做哈希函數(shù),存放記錄的數(shù)組叫做哈希表。9.2常用類33Hashtable定義了四個(gè)構(gòu)造方法:(1)Hashtable()默認(rèn)構(gòu)造方法(2)Hashtable(intsize)創(chuàng)建指定大小的哈希表(3)Hashtable(intsize,floatfillRatio)創(chuàng)建了一個(gè)指定大小的哈希表,并且通過fillRatio指定填充比例。填充比例必須介于0.0和1.0之間,它決定了哈希表在重新調(diào)整大小之前的充滿程度:(4)Hashtable(Mapm)創(chuàng)建了一個(gè)以M中元素為初始化元素的哈希表。哈希表的容量被設(shè)置為M的兩倍。9.2常用類9.2常用類Hashtable中除了從Map接口中定義的方法外,還定義了以下方法:(1)voidclear()

將此哈希表清空,使其不包含任何鍵。(2)Objectclone()創(chuàng)建此哈希表的淺表副本。(3)booleancontains(Objectvalue)

測(cè)試此映射表中是否存在與指定值關(guān)聯(lián)的鍵。(4)booleancontainsKey(Objectkey)測(cè)試指定對(duì)象是否為此哈希表中的鍵。(5)booleancontainsValue(Objectvalue)如果此Hashtable將一個(gè)或多個(gè)鍵映射到此值,則返回true。(6)Enumerationelements()返回此哈希表中的值的枚舉。(7)Objectget(Objectkey)返回指定鍵所映射到的值,如果此映射不包含此鍵的映射,則返回

null.更確切地講,如果此映射包含滿足

(key.equals(k))

的從鍵

k

到值

v

的映射,則此方法返回

v;否則,返回

null。9.2常用類(8)booleanisEmpty()測(cè)試此哈希表是否沒有鍵映射到值。(9)Enumerationkeys()

返回此哈希表中的鍵的枚舉。(10)Objectput(Objectkey,Objectvalue)將指定

key

溫馨提示

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

評(píng)論

0/150

提交評(píng)論