JavaSE期末總測試題1_第1頁
JavaSE期末總測試題1_第2頁
JavaSE期末總測試題1_第3頁
JavaSE期末總測試題1_第4頁
JavaSE期末總測試題1_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

JavaSE期末總測試注意:直接將自己的答案編寫在每一道試題的下面,代碼要規(guī)范,最好使用不同背景加注,提交試卷的時候文件的命名格式如:”姓名”一、簡答題1.簡述面向?qū)ο蟮奶卣饔心男┓矫妫咳筇卣鳎悍庋b、繼承、多態(tài)1、封裝:在開發(fā)中,實(shí)體類我們一般都會封裝起來,隱藏對象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對外提供公共訪問方式。1)私有化屬性2)根據(jù)需求設(shè)置set、get方法3)提供公共方法對其訪問2、繼承:1)父類的由來:多個類不斷向上抽取共性內(nèi)容而來的2)只支持單繼承,但支持多重繼承,即A繼承B,B繼承C,C繼承D3)為什么不支持多繼承,當(dāng)兩個父類中有相同的功能時,子類方法調(diào)用該功能時該運(yùn)行哪一個呢?4)當(dāng)類與類之間存在著所屬關(guān)系時,才具備了繼承的前提5)子類覆蓋父類時,必須要保證子類方法的權(quán)限大于等于父類方法的權(quán)限6)覆蓋時,要么都靜態(tài),要么都不靜態(tài)3、多態(tài):1)體現(xiàn):父類的引用或者接口的引用指向了自己的子類對象,即父類可以調(diào)用子類中復(fù)寫過的方法。//Animala=newCat();2)前提:必須要有關(guān)系,如繼承、實(shí)現(xiàn);通常會有覆蓋操作3)弊端:當(dāng)父類引用指向子類對象時,只能訪問父類中含有的方法.簡述StringBuffer和StringBuilder的區(qū)別?(10分)StringBuffer:字符串緩沖區(qū),從JDK1.0開始的,是一個線程安全的存儲字符容器。如果頻繁修改字符串的內(nèi)容,建議使用字符串緩沖類StringBuffer。StringBuilder:字符串緩沖區(qū),從JDK1.5開始的,非線程安全,但效率高。單線程操作,使用StringBuilder效率高;多線程操作,使用StringBuffer安全。.在main方法中的執(zhí)行代碼如下:Strings1="abc";Strings2="abc";System.out.println(s1==s2);請寫出以上代碼的輸出的結(jié)果,分析輸出結(jié)果的原因。(10分)打?。簍rueString對象可以直接使用字面量賦值,而且多個String對象指向同一個字面量時,在堆內(nèi)存當(dāng)中只有一個java對象。如果調(diào)用String構(gòu)造函數(shù)給String類型的引用賦值,那么每調(diào)用一次構(gòu)造函數(shù),在堆內(nèi)存當(dāng)中就會生成一個string對象。所以,如果s1、s2都是同一個字面量賦值,那么無論是用==還是equals(),都返回true。如果s1、s2使用String構(gòu)造函數(shù)生成對象,并且傳入的字面量相等,那么用==返回false,用equals()返回true。.多線程有幾種實(shí)現(xiàn)方法?同步有幾種實(shí)現(xiàn)方法?(10分)兩大方法:extendThread類、implementsRunnable接口1、繼承Thread類,由子類腹瀉run()方法1)自定義子類繼承Thread類2)將讓線程運(yùn)行的代碼存儲到run()方法中3)通過創(chuàng)建Thread的子類對象,創(chuàng)建線程對象4)通過子類調(diào)用start()方法,開啟線程2、實(shí)現(xiàn)Runnable接口1)自定義類實(shí)現(xiàn)Runnable接口2)將讓線程運(yùn)行的代碼存儲到run()方法中3)創(chuàng)建Thread類線程對象4)創(chuàng)建自定義類對象,將自定義類對象作為實(shí)際參數(shù)傳遞給Thread類的構(gòu)造函數(shù)(為了讓線程對象明確要運(yùn)行的run方法所屬的對象)5)調(diào)用Thread對象的start方法開啟線程,并運(yùn)行Runnable接口中的run方法synchronized,wait與notify都可以實(shí)現(xiàn)同步.列出Java你所知道的集合體系,并簡述各自的特點(diǎn).(10分)集合:用于存儲數(shù)據(jù)的容器特點(diǎn):集合用于存儲對象;集合是可變長度的集合與數(shù)組的區(qū)別:1)數(shù)組是固定長度的,集合是可變長度的2)數(shù)組可以存儲基本數(shù)據(jù)類型,也可以存儲引用數(shù)據(jù)類型;集合只能存儲引用數(shù)據(jù)類型3)數(shù)組存儲的元素是同一個類型的元素;集合存儲的對象可以是不同數(shù)據(jù)類型的對象單列集合:Collection,根接口List:有序,元素有索引,元素可以重復(fù)Set:無序,不可以存儲重復(fù)元素,必須保證元素的唯一性ArrayList:底層的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,線程不同步,非線程安全,查詢速度快,增刪慢;LinkedList:底層的數(shù)據(jù)結(jié)構(gòu)是鏈表,線程不同步,非線程安全,查詢速度慢,增刪快;Vector:底層的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,線程同步,線程安全,查詢、增刪都非常慢HashSet:底層是哈希表,線程不同步,非線程安全,無序、高效LinkedHashSet:有序,HashSet的子類TreeSet:底層的數(shù)據(jù)結(jié)構(gòu)是二叉樹,線程不同步,非線程安全,對Set集合中的元素排序雙列集合:Map,根接口HashTable:底層是哈希表數(shù)據(jù)結(jié)構(gòu),線程同步,不可以存儲null鍵、null值HashMap:底層是哈希表數(shù)據(jù)結(jié)構(gòu),線程不同步,可以存null鍵、null值,替代了HashTableTreeMap:底層是二叉樹結(jié)構(gòu),可以對map集合中的鍵值進(jìn)行指定順序的排序.集合與數(shù)組的區(qū)別是什么呢?(10分)1)集合是可變長度的,數(shù)組是固定長度的2)集合只能存儲對象的引用,數(shù)組既可以存儲對象的引用又可以存儲基本數(shù)據(jù)類型3)集合可以存儲不同數(shù)據(jù)類型的元素,數(shù)組只能存儲相同數(shù)據(jù)類型的元素.Collection和Collections的區(qū)別?(10分)Collection是java.util下的接口,是各種集合結(jié)構(gòu)的父接口,繼承于它的接口主要有Set、List,提供了一些關(guān)于集合的一些操作,如插入、刪除、判斷一個元素是否為其成員、遍歷等操作。Collections是java.util下的類,是集合的幫助類,提供一些靜態(tài)方法,實(shí)現(xiàn)對集合的查找、排序、替換、線程安全化等操作。.HashSet是如何保證元素唯一性的。(10分)HashSet底層數(shù)據(jù)結(jié)構(gòu)是哈希表,不存入重復(fù)元素,線程不同步,無序、高效。HashSet集合保證元素的唯一性,是通過元素的hashCode方法和equals方法完成的。當(dāng)元素的hashCode值相同時,才判斷元素的equals是否為true,如果為true,則視為相同元素,不存儲;如果為false,則存儲。如果hashCode值不同,則不判斷equals,從而提高對象的比較速度。.簡述ArrayList與Vector的區(qū)別,ArrayList與LinkedList的區(qū)別(10分)ArrayList與Vector底層數(shù)據(jù)結(jié)構(gòu)都是Object數(shù)組,ArrayList非線程安全;Vector線程安全,但查詢、增刪都非常慢。ArrayList:底層數(shù)據(jù)結(jié)構(gòu)是Object數(shù)組,線程不同步,非線程安全,查詢快,增刪慢LinkedList:底層數(shù)據(jù)結(jié)構(gòu)是鏈表,線程不同步,非線程安全,查詢慢,增刪快如果我們需要保留存儲順序,并且保留重復(fù)元素的時候,使用List;如果查詢比較多,則使用ArrayList;如果存取比較多,則使用LinkedList;如果要線程安全,則使用Vector。二、編程題(寫出代碼思路,偽代碼)1.使用TCP,模擬一下QQ的信息交流功能,客戶端,服務(wù)端(10分)packagetest;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;.ServerSocket;.Socket;publicclassTest22{/*建立tcp的服務(wù)器接受客戶端的連接,傳聲一個Socket獲取到Socket的輸入流對象獲取到Socket輸出流的對象逵書破互卷___下筆力逵書破互卷___下筆力0有注電獲取鍵盤的輸入流對象讀取客戶端的數(shù)據(jù)關(guān)閉資源*/publicstaticvoidmain(String[]args)throwslOException{ServerSocketserverSocket=newServerSocket(8088);Socketsocket=serverSocket.accept();BufferedReadersReader=newBufferedReader(newInputStreamReader(socket.getInputStream()));OutputStreamWritersOut=newOutputStreamWriter(socket.getOutputStream());BufferedReaderkeyReader=newBufferedReader(newInputStreamReader(System.in));Stringline=null;while((line=sReader.readLine())!=null){System.out.println("服務(wù)端接收到的信息:"+line);System.out.println("請輸入回送給客戶端");line=keyReader.readLine();sOut.write(line+"\r'n");sOut.flush();}serverSocket.close();}}客戶端類packagetest;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;.InetAddress;.Socket;.UnknownHostException;publicclassTest22send{publicstaticvoidmain(String[]args)throwslOException,lOException{//建立tcp的客戶端服務(wù)//獲取socket的輸出對象//獲取socket的輸入流對象//獲取鍵盤的輸入流對象,讀取數(shù)據(jù)//不斷的讀取鍵盤錄入數(shù)據(jù),然后把數(shù)據(jù)寫出//flush刷一把//...Socketsocket=newSocket(InetAddress.getLocalHost(),8088);OutputStreamWritersOut=newOutputStreamWriter(socket.getOutputStream());BufferedReadersReader=newBufferedReader(newInputStreamReader(socket.getInputStream()));BufferedReaderkeyReader=newBufferedReader(newInputStreamReader(System.in));Stringline=null;while((line=keyReader.readLine())!=null){sOut.write(line+"\r\n");sOut.flush();line=sReader.readLine();System.out.print("服務(wù)器送回的數(shù)據(jù)是:"+line);}socket.close();}}2.編寫一個方法實(shí)現(xiàn)拷貝任意文件的功能,要求效率最高。(10分)packagetest;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.File;importjava.io.FileInputStream;逵書破互卷___下筆力逵書破互卷___下筆力0有注電importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.Scanner;publicclassCopyFile{publicstaticvoidmain(String[]args)throwsiOException{System.out.print(”請輸入要拷貝的文件的絕對路徑”);Scanners=newScanner(System.in);FileinFile=newFile(s.next());FileoutFile=newFile("E:\\CopyFile.jpg");System.out.println("E:\\CopyFile.jpg");FileinputstreamFileinputStream(inFile);FileOutputStreamFileOutputStream(outFile);BufferedinputStream拷貝成功,拷fileinputstreamfileOutputStreambufferedinputStreamSystem.out.println("E:\\CopyFile.jpg");FileinputstreamFileinputStream(inFile);FileOutputStreamFileOutputStream(outFile);BufferedinputStream拷貝成功,拷fileinputstreamfileOutputStreambufferedinputStreamnewnewnewBufferedinputStream(fileinputStream);newBufferedOutputStreambufferedOutputStreamnewBufferedOutputSt

溫馨提示

  • 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

提交評論