java網(wǎng)絡(luò)編程復(fù)習(xí)題[驕陽(yáng)教育]_第1頁(yè)
java網(wǎng)絡(luò)編程復(fù)習(xí)題[驕陽(yáng)教育]_第2頁(yè)
java網(wǎng)絡(luò)編程復(fù)習(xí)題[驕陽(yáng)教育]_第3頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 Java網(wǎng)絡(luò)編程期末復(fù)習(xí)題(I/O、多線程、網(wǎng)絡(luò)編程、數(shù)據(jù)庫(kù)操作)一、單選題1、下列關(guān)于Java線程的說(shuō)法那些是正確的( ) A、每一個(gè)Java線程可以看成由代碼、一個(gè)真實(shí)的CPU以及數(shù)據(jù)三部份組成。B、創(chuàng)建線程的兩種方法中,從Thread類中繼承的創(chuàng)建方式可以防止出現(xiàn)多父類問(wèn)題。C、Thread類屬于java.util程序包。D、以上說(shuō)法無(wú)一正確。2、運(yùn)行下列程序, 會(huì)產(chǎn)生什么結(jié)果?( )public class X extends Thread implements Runable public void run() System.out.println(this is run(); p

2、ublic static void main(String args) Thread t=newThread(new X(); t.start(); A、第一行會(huì)產(chǎn)生編譯錯(cuò)誤 B、第六行會(huì)產(chǎn)生編譯錯(cuò)誤 C、第六行會(huì)產(chǎn)生運(yùn)行錯(cuò)誤 D、程序會(huì)運(yùn)行和啟動(dòng) 3、下列選項(xiàng)中,用于定義接口的關(guān)鍵字是( )A、importB、implementsC、interfaceD、protected4定義類頭時(shí)能使用的修飾符是( )。A) private B) static C) abstract D) protected5、下面哪個(gè)方法不可以在任何時(shí)候被任何線程調(diào)用?( )A、wait()B、sleep()C、yi

3、eld()D、synchronized(this)6. 下列關(guān)于線程優(yōu)先級(jí)的說(shuō)法中,正確的是 A) 線程的優(yōu)先級(jí)是不能改變的 B) 線程的優(yōu)先級(jí)是在創(chuàng)建線程時(shí)設(shè)置的 C) 在創(chuàng)建線程后的任何時(shí)候都可以設(shè)置 D) B和C 7.線程生命周期中正確的狀態(tài)是A) 新建狀態(tài)、運(yùn)行狀態(tài)和終止?fàn)顟B(tài)B) 新建狀態(tài)、運(yùn)行狀態(tài)、阻塞狀態(tài)和終止?fàn)顟B(tài) C) 新建狀態(tài)、可運(yùn)行狀態(tài)、運(yùn)行狀態(tài)、阻塞狀態(tài)和終止?fàn)顟B(tài) D) 新建狀態(tài)、可運(yùn)行狀態(tài)、運(yùn)行狀態(tài)、恢復(fù)狀態(tài)和終止?fàn)顟B(tài) 8.Thread類中能運(yùn)行線程體的方法是A) start() B) resume() C) init() D) run() 9在程序讀入字符文件時(shí),能夠以

4、該文件作為直接參數(shù)的類是A) FileReader B) BufferedReader C) FileInputStream D) ObjectInputStream 10)java.io包的File類是A) 字符流類 B) 字節(jié)流類 C) 對(duì)象流類 D) 非流類 11)下列描述中,正確的是A) 在Serializable接口中定義了抽象方法B) 在Serializable接口中定義了常量 C) 在Serializable接口中沒(méi)有定義抽象方法,也沒(méi)有定義常量 D) 在Serializable接口中定義了成員方法 12. java中用于創(chuàng)建文件對(duì)象的類是( )AFile B. Object C

5、. Thread D. Frame13. 從鍵盤上輸入一個(gè)字符串創(chuàng)建文件對(duì)象,若要判斷該文件對(duì)象為目錄文件或數(shù)據(jù)文件,可使用下列哪個(gè)方法?( ) AgetPath() B. getName() C.isFile() D. isAbsolute()14. 下列哪個(gè)類不對(duì)直接創(chuàng)建對(duì)象?( ) AInputStream B. FileInputStream C. BufferedInputStream D. DataInputStream15. 從鍵盤上輸入多個(gè)字符時(shí),為了避免回車換行符的影響,需要使用下列哪個(gè)流方法?( ) Awrite() B. flush() C. close() D. ski

6、p() 16. 以對(duì)象為單位把某個(gè)對(duì)象寫入文件,則需要使用什么方法? ( ) A. writeInt() B writeObject() C. write() D.writUTF()17. 下列哪個(gè)類的方法能夠直接把簡(jiǎn)單數(shù)據(jù)類型寫入文件?( ) AOutputStream B. BufferedWriter C. ObjectOutputStream. D.FileWriter18. 若一個(gè)類對(duì)象能被整體寫入文件,則定義該類時(shí)必須實(shí)現(xiàn)下列哪個(gè)接口?( ) A.Runnable B. ActionListener C. WindowsAdapter D. Serializable19. 下列哪種

7、類型的數(shù)據(jù)能以對(duì)象的形式寫入文件?( ) AString B. Frame C. Dialog D. Button20. File類的方法中,用于列舉某目錄下的子目錄及文件的方法是( ) Along length() B. long lastModified() C. String list() D. String getName()21. 能夠以字符串為單位寫入文件數(shù)據(jù)的流類是( ) A. FileOutputStream B. FileWriter C. BufferedWriter C. OutputStream22. 能夠向文件輸入邏輯型數(shù)據(jù)的類是:( ) A. FileOutputS

8、tream B. OutputStream C. FileWriter D.DataOutputStream23. 在線程同步中, 為了喚醒另一個(gè)等待的線程,使用下列方法( ) A. sleep() B. wait() C notify() D. join()24. 為了得到當(dāng)前正在運(yùn)行的線程,可使用下列哪個(gè)方法?( ) AgetName() B. Thread.CurrentThread(). B. sleep() D. run()25. 以下( )不屬于線程的狀態(tài)。 A就緒狀態(tài) B。運(yùn)行狀態(tài) C。掛起狀態(tài) D。獨(dú)占狀態(tài)26當(dāng)線程被創(chuàng)建后,其所處的狀態(tài)是( ) A阻塞狀態(tài) B。運(yùn)行狀態(tài) C、

9、就緒狀態(tài) D、新建狀態(tài)27 當(dāng)線程調(diào)用start()后,其所處狀態(tài)為( ) A阻塞狀態(tài) B。運(yùn)行狀態(tài) C、就緒狀態(tài) D、新建狀態(tài)28 Thread.sleep()方法調(diào)用后,當(dāng)?shù)却龝r(shí)間未到,該線程所處狀態(tài)為( ) A阻塞狀態(tài) B。運(yùn)行狀態(tài) C、就緒狀態(tài) D、新建狀態(tài)29新生狀態(tài)的線程其可能直接進(jìn)入的狀態(tài)是( ) A阻塞狀態(tài) B、運(yùn)行狀態(tài) C、新建狀態(tài) D、結(jié)束狀態(tài)30Thread.sleep()方法調(diào)用后,當(dāng)?shù)却龝r(shí)間已到,該線程所處狀態(tài)為( ) A阻塞狀態(tài) B。運(yùn)行狀態(tài) C、就緒狀態(tài) D、新建狀態(tài)31當(dāng)線程因異常而退出run()后,其所處狀態(tài)為( ) A阻塞狀態(tài) B。運(yùn)行狀態(tài) C、就緒狀態(tài) D

10、、結(jié)束狀態(tài)32wait()方法首先是哪個(gè)類的方法?( ) A. Object B. Thread. C. Runnable D. File33. 如果我們想實(shí)現(xiàn)“先把要寫入文件的數(shù)據(jù)先緩存到內(nèi)存中,再把緩存中的數(shù)據(jù)寫入文件中”的功能時(shí),則需要使用下列哪個(gè)類?( ) A. FileReader B. OutputStream C. FilterOutputStream D. DataOutputStream34. 用read()方法讀取文件內(nèi)容時(shí),判斷文件結(jié)束的標(biāo)記為( ) A. 0 B. 1 C -1 D. 無(wú)標(biāo)記35 以下哪個(gè)方法只對(duì)使用了緩沖的流類起作用?( ) A. read() B.

11、write() C skip() D. flush()36. Java提供的類InetAddress來(lái)進(jìn)行有關(guān)Internet地址的操作.( ) A. Socket B.ServerSocket C. DatagramSocket D InetAddress37. InetAddress類中哪個(gè)方法可實(shí)現(xiàn)正向名稱解析?( ) A. isReachable() B. getHostAddress() C. getHosstName() D.getByName()38. 為了獲取遠(yuǎn)程主機(jī)的文件內(nèi)容,當(dāng)創(chuàng)建URL對(duì)象后,需要使用哪個(gè)方法獲取信息( ) A.getPort() B.getHost C.

12、openStream() D.openConnection()39. java程序中,使用TCP套接字編寫服務(wù)端程序的套接字類是( ) A. Socket B. ServerSocket C. DatagramSocket D.DatagramPacket40. ServerSocket的監(jiān)聽(tīng)方法accept()的返回值類型是( ) A. void B. Object C. Socket D. DatagramSocket41. ServerSocket的getInetAddress()的返回值類型是( ) A. Socket B ServerSocket D.InetAddress D,.U

13、RL42. 當(dāng)使用客戶端套接字Socket創(chuàng)建對(duì)象時(shí),需要指定( ) A服務(wù)器主機(jī)名稱和端口 B、服務(wù)器端口和文件 C、服務(wù)器名稱和文件 D服務(wù)器地址和文件43使用流式套接字編程時(shí),為了向?qū)Ψ桨l(fā)送數(shù)據(jù),則需要使用哪個(gè)方法( ) AgetInetAddress() B. getLocalPort() C.getOutputStream() D.getInputStream()44. 使用UDP套接字通信時(shí),常用哪個(gè)類把要發(fā)送的信息打包? ( ) A. String B. DatagramSocket C. MulticastSocket D.DatagramPacket45. 使用UDP套接字通

14、信時(shí),哪個(gè)方法用于接收數(shù)據(jù) ( ) A. read() B. receive() C. accept() D. Listen()46. 若要取得數(shù)據(jù)包的中源地址,可使用下列哪個(gè)語(yǔ)句( )? A getAddress() B. getPort() C. getName() D.getData()47. 要使用java程序訪問(wèn)數(shù)據(jù)庫(kù),則必須首先與數(shù)據(jù)庫(kù)建立連接,在建立連接前,應(yīng)加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,該語(yǔ)句為( ) A Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”) B. DriverManage.getConnection(“”,”,”) C.Result

15、 rs= DriverManage.getConnection(“”,”,”).createStatement() D. Statement st= DriverManage.getConnection(“”,”,”).createStaement()48. 要使用java程序訪問(wèn)數(shù)據(jù)庫(kù),則必須首先與數(shù)據(jù)庫(kù)建立連接,該語(yǔ)句為( ) A Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”) B. DriverManage.getConnection(“”,”,”) C.Result rs= DriverManage.getConnection(“”,”,”)

16、.createStatement() D. Statement st= DriverManage.getConnection(“”,”,”).createStaement()49. java程序與數(shù)據(jù)庫(kù)連接后,需要查看某個(gè)表中的數(shù)據(jù),使用下列哪個(gè)語(yǔ)句?( ) A. executeQuery() B.executeUpdate() C executeEdit() D.executeSelect()50. java程序與數(shù)據(jù)庫(kù)連接后,需要查看某個(gè)表中的數(shù)據(jù),使用下列哪個(gè)語(yǔ)句?( ) A. executeQuery() B.executeUpdate() C executeEdit() D.exec

17、uteSelect()二、填空題1Stdout System.out作為PrintStream的實(shí)例,來(lái)實(shí)現(xiàn)stdout,它代表的是 屏幕 2Stdin System.in作為InputStream類的一個(gè)實(shí)例來(lái)實(shí)現(xiàn)stdin,它代表的是鍵盤,你可以使用其中兩個(gè)成員函數(shù), read()讓你從輸入中讀一個(gè)字節(jié),skip(longn)讓你在輸入中跳過(guò)n個(gè)字節(jié)。3 Java中的IO流分為兩種,一種是字節(jié)流,另一種是字符流,分別由四個(gè)抽象類來(lái)表示(每種流包括輸入和輸出兩種所以一共四個(gè)):InputStream,OutputStream,Reader,Writer。它們通過(guò)重載read()和write(

18、)方法定義了6個(gè)讀寫操作方法。4 File類不是一個(gè)標(biāo)準(zhǔn)的I/O類,在java.io類庫(kù)中它是唯一的non-stream類別,既不能讀取文件內(nèi)容,也不能修改文件內(nèi)容,主要作用是收集檔案(或目錄)的相關(guān)信息,例如:建立文件對(duì)象、修改文件名、設(shè)置文件屬性、測(cè)試文件屬性5目錄是一個(gè)包含其他文件和路徑列表的File 類。當(dāng)你創(chuàng)建一個(gè)File 對(duì)象且它是目錄時(shí),isDirectory( ) 方法返回ture。這種情況下,可以調(diào)用該對(duì)象的String list( )方法來(lái)提取該目錄內(nèi)部其他文件和目錄的列表6. 所有的輸出過(guò)濾流都是抽象類_ _的子類。(FilterOutputStream)7、字符輸入流B

19、ufferedReader使用了_ _技術(shù)。(PrintStream)8、 InputStreamReader負(fù)責(zé)將InputStream轉(zhuǎn)化成Reader,而OutputStreamWriter則將OutputStream轉(zhuǎn)化成Writer。實(shí)際上是通過(guò)byte和String來(lái)關(guān)聯(lián)。9、設(shè) a.txt為當(dāng)前目錄下的一個(gè)文本文件,則以字符方式向該文件寫數(shù)據(jù)時(shí),需要建立的輸出流通道為:new FileWriter(“a.txt”);10. 隨機(jī)訪問(wèn)文件類是RandomAccessFile,它實(shí)現(xiàn)了與DataInputStream, DataOutputStream類同樣實(shí)現(xiàn)的接口DataInpu

20、t, DataOutput.。11實(shí)現(xiàn)多線程的兩種方式是:1、繼承Thread類;2、實(shí)現(xiàn)Runnable接口。12、取得當(dāng)前線程的語(yǔ)句是: Thread.currentThread();13主線程的名稱是main, 默認(rèn)創(chuàng)建的第一個(gè)子線程的名稱是thread-014. 可以調(diào)用 Thread 類的方法 getPriority() 和 setPriority()來(lái)存取線程的優(yōu)先級(jí),線程的優(yōu)先級(jí)界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之間,缺省是5(NORM_PRIORITY)。15.(1) 當(dāng)多個(gè)線程同時(shí)運(yùn)行時(shí),會(huì)產(chǎn)生數(shù)據(jù)錯(cuò)誤及其它沖突問(wèn)題。Java語(yǔ)言提供了線程同

21、步控制機(jī)制,一是 鎖定共享資源,使得在任何時(shí)刻只有一個(gè)線程能夠訪問(wèn)共享資源,以保持共享資源的完整和一致,二是讓互相通信的線程 運(yùn)行,以保證通信的正確性。(2)線程之間的通信有兩種方法:一是把共享變量和方法封閉在一個(gè)類中,二是利用系統(tǒng)方法 和 控制線程通信. 實(shí)現(xiàn)對(duì)共享資源互拆訪問(wèn)的方法是在方法聲明中加入synchronized關(guān)鍵字來(lái)聲明一個(gè)訪問(wèn)共享資源的方法,或者通過(guò) synchronized關(guān)鍵字來(lái)聲明synchronized 塊。 16、 守護(hù)線程一般被用于在后臺(tái)為其它線程提供服務(wù)。調(diào)用方法 isDaemon() 來(lái)判斷一個(gè)線程是否是守護(hù)線程,也可以調(diào)用方法setDaemon()將一個(gè)線

22、程設(shè)為守護(hù)線程。 17、InetAddress是用于封裝IP地址和DNS的一個(gè)類。 18、TCP/IP套接字是最可靠的雙向流協(xié)議。等待客戶端的服務(wù)器使用ServerSocket類,而要連接到服務(wù)器的客戶端則使用Socket類。 19、包中提供了一個(gè)類MulticastSocket,允許數(shù)據(jù)報(bào)以廣播方式發(fā)送到該端口的所有客戶。 20. 在TCP/IP協(xié)議的傳輸層除了TCP協(xié)議之外還有一個(gè)UDP協(xié)議。幾個(gè)標(biāo)準(zhǔn)的應(yīng)用層協(xié)議HTTP,F(xiàn)TP,SMTP使用的都是TCP協(xié)議。 UDP協(xié)議主要用于需要很強(qiáng)的實(shí)時(shí)交互性的場(chǎng)合,如網(wǎng)絡(luò)游戲,視頻會(huì)議等 21、當(dāng)我們得到一個(gè)URL對(duì)象后,就可以通過(guò)它讀取指定的WW

23、W資源。這時(shí)我們將使用URL的方法openStream(),其定義為:InputStream openStream(); 22、URL的構(gòu)造方法都聲明拋棄非運(yùn)行時(shí)異常 MalformedURLException ,因此生成URL對(duì)象時(shí),我們必須要對(duì)這一例外進(jìn)行處理,通常是用try-catch語(yǔ)句進(jìn)行捕獲。 23、一個(gè)Statement對(duì)象,可以執(zhí)行多個(gè)sql語(yǔ)句以后,批量更新。這多個(gè)語(yǔ)句可以是delete、update、insert等或兼有 24、Java數(shù)據(jù)庫(kù)操作基本流程:取得數(shù)據(jù)庫(kù)連接 、執(zhí)行sql語(yǔ)句、處理執(zhí)行結(jié)果、釋放數(shù)據(jù)庫(kù)連接。 25、下列程序的功能是在監(jiān)控臺(tái)上每隔一秒鐘顯示一個(gè)字符

24、串“Hello”,能夠填寫在程序中下劃線位置,使程序完整并能正確運(yùn)行的語(yǔ)句是 public class Test implements Runnable public static void main(String args) Test t=new Test(); Thread tt=new Thread(t); tt.start(); public void run() for(;) try ; catch( e) System.put.println(Hello); 答: Thread.sleep(1000) InterruptedException三、簡(jiǎn)答與程序分析、填空、設(shè)計(jì)題第一部分

25、:簡(jiǎn)答1、線程的生命期內(nèi)包括哪些狀態(tài)? 答:新建狀態(tài)、就緒狀態(tài)、運(yùn)行狀態(tài)、阻塞狀態(tài)、死亡狀態(tài) 見(jiàn)下圖:各狀態(tài)之間的切換關(guān)系 死亡創(chuàng)建阻塞就緒運(yùn)行2、什么是線程的新建狀態(tài)?答: 線程對(duì)象已經(jīng)創(chuàng)建,還沒(méi)有在其上調(diào)用start()方法。3、什么是線程的可運(yùn)行狀態(tài)?答:當(dāng)線程有資格運(yùn)行,但調(diào)度程序還沒(méi)有把它選定為運(yùn)行線程時(shí)線程所處的狀態(tài)。當(dāng)start()方法調(diào)用時(shí),線程首先進(jìn)入可運(yùn)行狀態(tài)。在線程運(yùn)行之后或者從阻塞、等待或睡眠狀態(tài)回來(lái)后,也返回到可運(yùn)行狀態(tài)。4、什么是線程的死亡態(tài)?答:當(dāng)線程的run()方法完成時(shí)就認(rèn)為它死去。這個(gè)線程對(duì)象也許是活的,但是,它已經(jīng)不是一個(gè)單獨(dú)執(zhí)行的線程。線程一旦死亡,就不

26、能復(fù)生。 如果在一個(gè)死去的線程上調(diào)用start()方法,會(huì)拋出java.lang.IllegalThreadStateException異常。5、調(diào)用join()方法有何作用?答: 保證當(dāng)前線程停止執(zhí)行,直到該線程所加入的線程完成為止。然而,如果它加入的線程沒(méi)有存活,則當(dāng)前線程不需要停止。6現(xiàn)有字符串S=”hello,java!”,則以此字符串生成待發(fā)送DatagramPacket包dgp的語(yǔ)句是:答: Byte str=s.getbytes(); DatagramPacket dgp=new DatagramPacket(str, str.length(),目的主機(jī),目的端口);7、 介紹使

27、用java Socket創(chuàng)建客戶端Socket的過(guò)程。 答:try Socket socket=new Socket(目標(biāo)主機(jī),目標(biāo)端口); catch(IOException e) System.out.println(Error:+e); 8、介紹使用java ServerSocket創(chuàng)建服務(wù)器端ServerSocket的過(guò)程。 答: ServerSocket server=null;try server=new ServerSocket(監(jiān)聽(tīng)端口); catch(IOException e)System.out.println(can not listen to :+e);Socket

28、socket=null;try socket=server.accept(); catch(IOException e)System.out.println(Error:+e); 9、寫出一種使用java流式套接式編程時(shí),創(chuàng)建雙方通信通道的語(yǔ)句。答:PrintStream os=new PrintStream(new BufferedOutputStreem(socket.getOutputStream();DataInputStream is=new DataInputStream(socket.getInputStream();PrintWriter out=new PrintWriter

29、(socket.getOutStream(),true);BufferedReader in=new ButfferedReader(new InputSteramReader(Socket.getInputStream(); 10、對(duì)于建立功能齊全的Socket,其工作過(guò)程包含以下四個(gè)基本的步驟:(1) 創(chuàng)建Socket;(2) 打開(kāi)連接到Socket的輸入/出流;(3) 按照一定的協(xié)議對(duì)Socket進(jìn)行讀/寫操作;(4) 關(guān)閉Socket.11、簡(jiǎn)述基于TCP及UDP套接字通信的主要區(qū)別答:TCP,可靠,傳輸大小無(wú)限制,但是需要連接建立時(shí)間,差錯(cuò)控制開(kāi)銷大。 UDP,不可靠,差錯(cuò)控制開(kāi)銷較

30、小,傳輸大小限制在64K以下,不需要建立連接。12、 寫出DatagramSocket的常用構(gòu)造方法: 答: DatagramSocket();DatagramSocket(int prot);DatagramSocket(int port, InetAddress laddr) port指明socket所使用的端口號(hào),如果未指明端口號(hào),則把socket連接到本地主機(jī)上一個(gè)可用的端口。laddr指明一個(gè)可用的本地地址。 13、介紹一下DatagramPacket的常用構(gòu)造方法 :DatagramPacket(byte buf,int length);DatagramPacket(byte bu

31、f, int length, InetAddress addr, int port);DatagramPacket(byte buf, int offset, int length);DatagramPacket(byte buf, int offset, int length, InetAddress address, int port);其中,buf中存放數(shù)據(jù)報(bào)數(shù)據(jù),length為數(shù)據(jù)報(bào)中數(shù)據(jù)的長(zhǎng)度,addr和port旨明目的地址,offset指明了數(shù)據(jù)報(bào)的位移量。 14、在接收端接收數(shù)據(jù)報(bào)的主要語(yǔ)句: 答: byte buf =new byten; DatagramPacket pack

32、et=new DatagramPacket(buf, n); Socket.receive (packet); 15、寫出java程序中用Statement來(lái)執(zhí)行sql查詢與更新語(yǔ)句String sql; /表示查詢或更新的操作語(yǔ)句;Statement sm = cn.createStatement(); /cn表示數(shù)據(jù)庫(kù)連接sm.executeQuery(sql); / 執(zhí)行數(shù)據(jù)查詢語(yǔ)句(select)sm.executeUpdate(sql); / 執(zhí)行數(shù)據(jù)更新語(yǔ)句(delete、update、insert、drop等)statement.close();16什么叫流?流式輸入輸出有什么特

33、點(diǎn)?17Java流被分為字節(jié)流、字符流兩大流類,兩者有什么區(qū)別?18File類有哪些構(gòu)造函數(shù)和常用方法?16答:所謂流是指同一臺(tái)計(jì)算機(jī)或網(wǎng)絡(luò)中不同計(jì)算機(jī)之間有序運(yùn)動(dòng)著的數(shù)據(jù)序列,Java把這些不同來(lái)源和目標(biāo)的數(shù)據(jù)都統(tǒng)一抽象為數(shù)據(jù)流。數(shù)據(jù)流可分為輸入流和輸出流,輸入流代表從其他設(shè)備流入計(jì)算機(jī)的數(shù)據(jù)序列,輸出流代表從計(jì)算機(jī)流向外部設(shè)備的數(shù)據(jù)序列。流式輸入輸出的特點(diǎn)是數(shù)據(jù)的獲取和發(fā)送沿?cái)?shù)據(jù)序列的順序進(jìn)行,即每一個(gè)數(shù)據(jù)都必須等待排在它前面的數(shù)據(jù),等前面的數(shù)據(jù)讀入或送出之后才能被讀寫。所以流和隊(duì)列一樣,只能以“先進(jìn)先出”的方式對(duì)其中的數(shù)據(jù)進(jìn)行讀寫,而不能隨意選擇讀寫的位置。17答:兩者都作為Object

34、類的直接子類,基本輸入流(InputStream)和基本輸出流(OutputStream)是處理以8位字節(jié)為基本單位的字節(jié)流類;Reader和Writer類是專門處理16位字符流的類。18答:構(gòu)造函數(shù)有:(1)public File(String pathname):創(chuàng)建一個(gè)對(duì)應(yīng)于參數(shù)pathname的File類對(duì)象。參數(shù)pathname是包含目錄和文件名的字符串。如果沒(méi)有文件名,則代表目錄。(2)public File(String parent , String child):該構(gòu)造函數(shù)將pathname分成兩部分parent和child,參數(shù)parent表示目錄或文件所在路徑,參數(shù)chi

35、ld表示目錄或文件名稱。(3)public File(File parent, String child):該構(gòu)造函數(shù)與上面一個(gè)不同在于將parent的參數(shù)類型由String變?yōu)镕ile,代表parent是一個(gè)已經(jīng)創(chuàng)建的File類文件對(duì)象(指向目錄)。常用方法有:(1)public boolean canWrite( ):返回文件是否可寫。(2)public boolean canRead( ):返回文件是否可讀。(3)public boolean createNewFile( ):當(dāng)文件不存在時(shí)創(chuàng)建文件。19位置指針的作用是什么?RandomAccessFile類提供了哪些方法實(shí)現(xiàn)對(duì)指針的控

36、制?19答:要實(shí)現(xiàn)對(duì)文件的隨機(jī)讀取,也就是在文件的任何位置執(zhí)行讀寫數(shù)據(jù)的操作,需要一個(gè)指針來(lái)指定讀寫的位置。在創(chuàng)建RandomAccessFile類對(duì)象的同時(shí),系統(tǒng)自動(dòng)創(chuàng)建了一個(gè)指向這個(gè)文件開(kāi)頭的指針,當(dāng)執(zhí)行讀寫操作后,指針自動(dòng)指向被讀寫數(shù)據(jù)之后的第一個(gè)字節(jié)處。指針初始值是0,每讀/寫一個(gè)字節(jié),指針自動(dòng)增加1。RandomAccessFile類提供了一些控制指針移動(dòng)的方法。public long getFilePointer();獲取當(dāng)前指針指向文件的位置。pulbic void seek(long pos);將指針移動(dòng)到參數(shù)pos指定的位置。public int skipBytes(int

37、n);指針從當(dāng)前位置向后移動(dòng)n個(gè)字節(jié)位置,并返回指針實(shí)際移動(dòng)的字節(jié)數(shù)。第二部分:分析程序功能或完成程序2、利用文件輸入輸出流編寫一個(gè)實(shí)現(xiàn)文件拷貝的程序,源文件名和目標(biāo)文件名通過(guò)命令行參數(shù)傳入。 答:import java.io.*;class CopyFilepublic static void main(String args) String file1,file2 ;int ch = 0 ;try file1=args0;file2=args1;FileInputStream fis = new FileInputStream(file1);FileOutputStream fos=new

38、 FileOutputStream(file2);while (ch=fis.read()!=-1)fos.write(ch);fis.close();fos.close();catch(FileNotFoundException e)System.out.println(源文件:未找到!);catch(ArrayIndexOutOfBoundsException e)System.out.println(缺少運(yùn)行參數(shù)!);System.exit(-1);catch (IOException e)System.out.println(e.toString();4、編寫一個(gè)程序,從鍵盤輸入一串字

39、符,統(tǒng)計(jì)這串字符中英文字母、數(shù)字、其他符號(hào)的字符數(shù)。4答:import java.io.*;public class Countpublic static void main(String args)int x=0,y=0,z=0;int ch;trywhile(ch=System.in.read()!=r)if(ch=A&ch=a&ch=0&ch=9)y+;elsez+;catch(IOException e)System.out.println(e.toString();System.out.println(英文字母:+x);System.out.println(數(shù)字字符:+y);Syst

40、em.out.println(其它字符:+z);5編寫一個(gè)程序,從鍵盤輸入一串字符,從屏幕輸出并將其存入a.txt文件中。5答:import java.io.*;public class InFilepublic static void main(String args)int ch;tryFileOutputStream out=new FileOutputStream(a.txt);while(ch=System.in.read()!=r)System.out.write(ch);out.write(ch);out.close();System.out.write(n);catch(IOE

41、xception e)System.out.println(e.toString();System.out.println(輸出至文件完畢!);8、下列程序向屏幕輸出文本文件內(nèi)容:請(qǐng)完成所缺少的代碼 import java.io.*; class readtxt public static void main(String args) try FileReader f1 = new FileReader(u.txt); BufferedReader bf1 =new BufferedReader(f1); String line; line = bf1.readLine(); while(li

42、ne!=null) /判斷所讀的一行內(nèi)容是否為空; System.out.println(line); line = bf1.readLine(); /繼續(xù)讀入下一行 bf1.close(); /關(guān)閉文件的輸入流; catch(IOException e) e.printStackTrace(); 10、請(qǐng)編寫java程序,訪問(wèn)所在的主頁(yè)文件 答: public class URLReader public static void main(String args) throws Exception /聲明拋出所有例外 URL tirc = new URL( /構(gòu)建一URL對(duì)象Buffered

43、Reader in = new BufferedReader(new InputStreamReader(tirc.openStream();/使用openStream得到一輸入流并由此構(gòu)造一個(gè)BufferedReader對(duì)象String inputLine;while (inputLine = in.readLine() != null) /從輸入流不斷的讀數(shù)據(jù),直到讀完為止 System.out.println(inputLine); /把讀入的數(shù)據(jù)打印到屏幕上 in.close(); /關(guān)閉輸入流 11、從鍵盤上輸入主機(jī)名稱,編寫類似ping的程序,測(cè)試連接效果。import .*; i

44、mport java.io.*; class Ping public static void main(String args) System.out.println(請(qǐng)輸入ping主機(jī)名稱或地址:n); try String host = keyreadline(); InetAddress ip = InetAddress.getByName(host); long t1 = System.currentTimeMillis(); if(ip.isReachable(5000) long t2 = System.currentTimeMillis(); System.out.println

45、(nReply from + ip.getHostAddress() + time= + (t2-t1) + ms);System.out.println(); else System.out.println(Request timed out.); catch (IOException e) System.out.println(Request timed out.); private static String keyreadline( ) BufferedReader br = new BufferedReader(new InputStreamReader(System.in); St

46、ring str = null; try str = br.readLine(); catch (IOException e) e.printStackTrace(); return str; 12、設(shè)服務(wù)器端程序監(jiān)聽(tīng)端口為8629, 當(dāng)收到客戶端信息后,首先判斷是否是“BYE”,若是,則立即向?qū)Ψ桨l(fā)送“BYE”,然后關(guān)閉監(jiān)聽(tīng),結(jié)束程序。若不是,則在屏幕上輸出收到的信息,并由鍵盤上輸入發(fā)送到對(duì)方的應(yīng)答信息。請(qǐng)編寫程序完成此功能。mport .*;import java.io.*; class Server public Server() try ServerSocket ss = new Se

47、rverSocket(8629); System.out.println(服務(wù)器端已運(yùn)行,等待客戶端連接:); Socket socket = ss.accept(); /接收客戶端的連接請(qǐng)求; BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(); PrintWriter out = new PrintWriter(socket.getOutputStream(),true); BufferedReader br = new BufferedReader(new InputSt

48、reamReader(System.in); String line; while(true) line = (in.readLine().trim(); if(line.equals(BYE) out.println(BYE); out.close(); in.close(); socket.close(); br.close(); ss.close(); break; System.out.println(客戶輸入為 : + line); System.out.println(請(qǐng)輸入回答: ); line=br.readLine(); /從鍵盤上輸入信息; out.println(line

49、); /向?qū)Ψ桨l(fā)送信息 catch (IOException e) public static void main(String args) throws Exception new Server(); 13、TCP客戶端需要向服務(wù)器端8629發(fā)出連接請(qǐng)求,與服務(wù)器進(jìn)行信息交流,當(dāng)收到服務(wù)器發(fā)來(lái)的是“BYE”時(shí),立即向?qū)Ψ桨l(fā)送“BYE”,然后關(guān)閉連接,否則,繼續(xù)向服務(wù)器發(fā)送信息。import java.io.*;import .*; class Client2 public Client2() try String s; Socket socket = new Socket(服務(wù)器地址, 86

50、29); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(); PrintWriter out = new PrintWriter(socket.getOutputStream(),true); BufferedReader line = new BufferedReader(new InputStreamReader(System.in); while(true) System.out.println(請(qǐng)向服務(wù)器輸出一條字符串:); s=line.readLine(); out.printl

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論