版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
V大發(fā)大綱Java網(wǎng)絡(luò)編程期末復(fù)習(xí)題(I/O、多線程、網(wǎng)絡(luò)編程、數(shù)據(jù)庫(kù)操作)一、單選題1、下列關(guān)于Java線程的說(shuō)法那些是對(duì)的的()A、每一個(gè)Java線程可以當(dāng)作由代碼、一個(gè)真實(shí)的CPU以及數(shù)據(jù)三部份組成。B、創(chuàng)建線程的兩種方法中,從Thread類中繼承的創(chuàng)建方式可以防止出現(xiàn)多父類問(wèn)題。C、Thread類屬于java.util程序包。D、以上說(shuō)法無(wú)一對(duì)的。2、運(yùn)營(yíng)下列程序,會(huì)產(chǎn)生什么結(jié)果?()publicclassXextendsThreadimplementsRunable{publicvoidrun(){System.out.println("thisisrun()");}publicstat(yī)icvoidmain(Stringargs[]){Threadt=newThread(newX());t.start();}}A、第一行會(huì)產(chǎn)生編譯錯(cuò)誤B、第六行會(huì)產(chǎn)生編譯錯(cuò)誤C、第六行會(huì)產(chǎn)生運(yùn)營(yíng)錯(cuò)誤D、程序會(huì)運(yùn)營(yíng)和啟動(dòng)3、下列選項(xiàng)中,用于定義接口的關(guān)鍵字是()
A、importB、implementsC、interfaceD、protected4.定義類頭時(shí)能使用的修飾符是()。
A)privateB)staticC)abstractD)protected?5、下面哪個(gè)方法不可以在任何時(shí)候被任何線程調(diào)用?()A、wait()B、sleep()C、yield()D、synchronized(this)6.下列關(guān)于線程優(yōu)先級(jí)的說(shuō)法中,對(duì)的的是A)線程的優(yōu)先級(jí)是不能改變的B)線程的優(yōu)先級(jí)是在創(chuàng)建線程時(shí)設(shè)立的C)在創(chuàng)建線程后的任何時(shí)候都可以設(shè)立D)B和C7.線程生命周期中對(duì)的的狀態(tài)是A)新建狀態(tài)、運(yùn)營(yíng)狀態(tài)和終止?fàn)顟B(tài)B)新建狀態(tài)、運(yùn)營(yíng)狀態(tài)、阻塞狀態(tài)和終止?fàn)顟B(tài)C)新建狀態(tài)、可運(yùn)營(yíng)狀態(tài)、運(yùn)營(yíng)狀態(tài)、阻塞狀態(tài)和終止?fàn)顟B(tài)D)新建狀態(tài)、可運(yùn)營(yíng)狀態(tài)、運(yùn)營(yíng)狀態(tài)、恢復(fù)狀態(tài)和終止?fàn)顟B(tài)8.Thread類中能運(yùn)營(yíng)線程體的方法是A)start() ? ? B)resume()C)init()? ? ? D)run()9在程序讀入字符文獻(xiàn)時(shí),可以以該文獻(xiàn)作為直接參數(shù)的類是A)FileReader ? ?B)BufferedReaderC)FileInputStream ?? ?D)ObjectInputStream10)java.io包的File類是A)字符流類 ??? B)字節(jié)流類C)對(duì)象流類?? ??D)非流類11)下列描述中,對(duì)的的是A)在Serializable接口中定義了抽象方法B)在Serializable接口中定義了常量C)在Serializable接口中沒(méi)有定義抽象方法,也沒(méi)有定義常量D)在Serializable接口中定義了成員方法12.java中用于創(chuàng)建文獻(xiàn)對(duì)象的類是()A.FileB.ObjectC.ThreadD.Frame13.從鍵盤上輸入一個(gè)字符串創(chuàng)建文獻(xiàn)對(duì)象,若要判斷該文獻(xiàn)對(duì)象為目錄文獻(xiàn)或數(shù)據(jù)文獻(xiàn),可使用下列哪個(gè)方法?()A.getPath()B.getName()C.isFile()D.isAbsolute()14.下列哪個(gè)類不對(duì)直接創(chuàng)建對(duì)象?()A.InputStreamB.FileInputStreamC.BufferedInputStreamD.Dat(yī)aInputStream15.從鍵盤上輸入多個(gè)字符時(shí),為了避免回車換行符的影響,需要使用下列哪個(gè)流方法?()A.write()B.flush()C.close()D.skip()16.以對(duì)象為單位把某個(gè)對(duì)象寫入文獻(xiàn),則需要使用什么方法?()A.writeInt()BwriteObject()C.write()D.writUTF()17.下列哪個(gè)類的方法可以直接把簡(jiǎn)樸數(shù)據(jù)類型寫入文獻(xiàn)?()A.OutputStreamB.BufferedWriterC.ObjectOutputStream.D.FileWriter18.若一個(gè)類對(duì)象能被整體寫入文獻(xiàn),則定義該類時(shí)必須實(shí)現(xiàn)下列哪個(gè)接口?()A.RunnableB.ActionListenerC.WindowsAdapterD.Serializable19.下列哪種類型的數(shù)據(jù)能以對(duì)象的形式寫入文獻(xiàn)?()A.StringB.FrameC.DialogD.Button20.File類的方法中,用于列舉某目錄下的子目錄及文獻(xiàn)的方法是()A.longlength()B.longlastModified()C.String[]list()D.StringgetName()21.可以以字符串為單位寫入文獻(xiàn)數(shù)據(jù)的流類是()A.FileOutputStreamB.FileWriterC.BufferedWriterC.OutputStream22.可以向文獻(xiàn)輸入邏輯型數(shù)據(jù)的類是:()A.FileOutputStreamB.OutputStreamC.FileWriterD.DataOutputStream23.在線程同步中,為了喚醒另一個(gè)等待的線程,使用下列方法()A.slee(cuò)p()B.wait()Cnotify()D.join()24.為了得到當(dāng)前正在運(yùn)營(yíng)的線程,可使用下列哪個(gè)方法?()A.getName()B.Thread.CurrentThread().B.sleep()D.run()25.以下()不屬于線程的狀態(tài)。A.就緒狀態(tài)B。運(yùn)營(yíng)狀態(tài)C。掛起狀態(tài)D。獨(dú)占狀態(tài)26.當(dāng)線程被創(chuàng)建后,其所處的狀態(tài)是()A.阻塞狀態(tài)B。運(yùn)營(yíng)狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)27.當(dāng)線程調(diào)用start()后,其所處狀態(tài)為()A.阻塞狀態(tài)B。運(yùn)營(yíng)狀態(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)營(yíng)狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)29.新生狀態(tài)的線程其也許直接進(jìn)入的狀態(tài)是()A.阻塞狀態(tài)B、運(yùn)營(yíng)狀態(tài)C、新建狀態(tài)D、結(jié)束狀態(tài)30.Thread.sleep()方法調(diào)用后,當(dāng)?shù)却龝r(shí)間已到,該線程所處狀態(tài)為()A.阻塞狀態(tài)B。運(yùn)營(yíng)狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)31.當(dāng)線程因異常而退出run()后,其所處狀態(tài)為()A.阻塞狀態(tài)B。運(yùn)營(yíng)狀態(tài)C、就緒狀態(tài)D、結(jié)束狀態(tài)32.wait()方法一方面是哪個(gè)類的方法?()A.ObjectB.Thread.C.RunnableD.File33.假如我們想實(shí)現(xiàn)“先把要寫入文獻(xiàn)的數(shù)據(jù)先緩存到內(nèi)存中,再把緩存中的數(shù)據(jù)寫入文獻(xiàn)中”的功能時(shí),則需要使用下列哪個(gè)類?()A.FileReaderB.OutputStreamC.FilterOutputStreamD.DataOutputStream34.用read()方法讀取文獻(xiàn)內(nèi)容時(shí),判斷文獻(xiàn)結(jié)束的標(biāo)記為()A.0B.1C-1D.無(wú)標(biāo)記35.以下哪個(gè)方法只對(duì)使用了緩沖的流類起作用?()A.read()B.write()Cskip()D.flush()36.Java提供的類InetAddress來(lái)進(jìn)行有關(guān)Internet地址的操作.()A.SocketB.ServerSocketC.Dat(yī)agramSocketDInetAddress37.InetAddress類中哪個(gè)方法可實(shí)現(xiàn)正向名稱解析?()A.isReachable()B.getHostAddress()C.getHosstName()D.getByName()38.為了獲取遠(yuǎn)程主機(jī)的文獻(xiàn)內(nèi)容,當(dāng)創(chuàng)建URL對(duì)象后,需要使用哪個(gè)方法獲取信息()A.getPort()B.getHostC.openStream()D.openConnection()39.java程序中,使用TCP套接字編寫服務(wù)端程序的套接字類是()A.SocketB.ServerSocketC.DatagramSocketD.DatagramPacket40.ServerSocket的監(jiān)聽(tīng)方法accept()的返回值類型是()A.voidB.ObjectC.SocketD.DatagramSocket41.ServerSocket的getInetAddress()的返回值類型是()A.SocketBServerSocketD.InetAddressD,.URL42.當(dāng)使用客戶端套接字Socket創(chuàng)建對(duì)象時(shí),需要指定()A.服務(wù)器主機(jī)名稱和端口B、服務(wù)器端口和文獻(xiàn)C、服務(wù)器名稱和文獻(xiàn)D.服務(wù)器地址和文獻(xiàn)43.使用流式套接字編程時(shí),為了向?qū)Ψ桨l(fā)送數(shù)據(jù),則需要使用哪個(gè)方法()A.getInetAddress()B.getLocalPort()C.getOutputStream()D.getInputStream()44.使用UDP套接字通信時(shí),常用哪個(gè)類把要發(fā)送的信息打包?()A.StringB.DatagramSocketC.MulticastSocketD.DatagramPacket45.使用UDP套接字通信時(shí),哪個(gè)方法用于接受數(shù)據(jù)()A.read()B.receive()C.a(chǎn)ccept()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ǔ)句為()AClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)B.DriverManage.getConnection(“”,””,””)C.Resultrs=DriverManage.getConnection(“”,””,””).createStatement()D.Statementst=DriverManage.getConnection(“”,””,””).createStaement()48.要使用java程序訪問(wèn)數(shù)據(jù)庫(kù),則必須一方面與數(shù)據(jù)庫(kù)建立連接,該語(yǔ)句為()AClass.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)B.DriverManage.getConnection(“”,””,””)C.Resultrs=DriverManage.getConnection(“”,””,””).createStatement()D.Statementst=DriverManage.getConnection(“”,””,””).createStaement()49.java程序與數(shù)據(jù)庫(kù)連接后,需要查看某個(gè)表中的數(shù)據(jù),使用下列哪個(gè)語(yǔ)句?()A.executeQuery()B.executeUpdate()CexecuteEdit()D.executeSelect()50.java程序與數(shù)據(jù)庫(kù)連接后,需要查看某個(gè)表中的數(shù)據(jù),使用下列哪個(gè)語(yǔ)句?()A.executeQuery()B.executeUpdate()CexecuteEdit()D.executeSelect()二、填空題1.StdoutSystem.out作為PrintStream的實(shí)例,來(lái)實(shí)現(xiàn)stdout,它代表的是屏幕2.StdinSystem.in作為InputStream類的一個(gè)實(shí)例來(lái)實(shí)現(xiàn)stdin,它代表的是鍵盤,你可以使用其中兩個(gè)成員函數(shù),read()讓你從輸入中讀一個(gè)字節(jié),skip(long
n)讓你在輸入中跳過(guò)n個(gè)字節(jié)。3.Java中的IO流分為兩種,一種是字節(jié)流,另一種是字符流,分別由四個(gè)抽象類來(lái)表達(dá)(每種流涉及輸入和輸出兩種所以一共四個(gè)):InputStream,OutputStream,Reader,Writer。它們通過(guò)重載read()和write()方法定義了6個(gè)讀寫操作方法。4.File類不是一個(gè)標(biāo)準(zhǔn)的I/O類,在java.io類庫(kù)中它是唯一的non-stream類別,既不能讀取文獻(xiàn)內(nèi)容,也不能修改文獻(xiàn)內(nèi)容,重要作用是收集檔案(或目錄)的相關(guān)信息,例如:建立文獻(xiàn)對(duì)象、修改文獻(xiàn)名、設(shè)立文獻(xiàn)屬性、測(cè)試文獻(xiàn)屬性5.目錄是一個(gè)包含其他文獻(xiàn)和途徑列表的File類。當(dāng)你創(chuàng)建一個(gè)File對(duì)象且它是目錄時(shí),isDirectory()方法返回ture。這種情況下,可以調(diào)用該對(duì)象的String[]list()方法來(lái)提取該目錄內(nèi)部其他文獻(xiàn)和目錄的列表6.所有的輸出過(guò)濾流都是抽象類_____(dá)的子類。(FilterOutputStream)7、字符輸入流BufferedReader使用了__(dá)__(dá)__技術(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è)文本文獻(xiàn),則以字符方式向該文獻(xiàn)寫數(shù)據(jù)時(shí),需要建立的輸出流通道為:newFileWriter(“a.txt”);10.隨機(jī)訪問(wèn)文獻(xiàn)類是RandomAccessFile,它實(shí)現(xiàn)了與DataInputStream,Dat(yī)aOutputStream類同樣實(shí)現(xiàn)的接口DataInput,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)營(yíng)時(shí),會(huì)產(chǎn)生數(shù)據(jù)錯(cuò)誤及其它沖突問(wèn)題。Java語(yǔ)言提供了線程同步控制機(jī)制,一是鎖定共享資源,使得在任何時(shí)刻只有一個(gè)線程可以訪問(wèn)共享資源,以保持共享資源的完整和一致,二是讓互相通信的線程運(yùn)營(yíng),以保證通信的對(duì)的性。(2)線程之間的通信有兩種方法:一是把共享變量和方法封閉在一個(gè)類中,二是運(yùn)用系統(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è)線程設(shè)為守護(hù)線程。
17、InetAddress是用于封裝IP地址和DNS的一個(gè)類。18、TCP/IP套接字是最可靠的雙向流協(xié)議。等待客戶端的服務(wù)器使用ServerSocket類,而要連接到服務(wù)器的客戶端則使用Socket類。19、java.net包中提供了一個(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ò)它讀取指定的WWW資源。這時(shí)我們將使用URL的方法openStream(),其定義為:InputStreamopenStream();?22、URL的構(gòu)造方法都聲明拋棄非運(yùn)營(yíng)時(shí)異常MalformedURLException,因此生成URL對(duì)象時(shí),我們必須要對(duì)這一例外進(jìn)行解決,通常是用try-catch語(yǔ)句進(jìn)行捕獲。23、一個(gè)Stat(yī)ement對(duì)象,可以執(zhí)行多個(gè)sql語(yǔ)句以后,批量更新。這多個(gè)語(yǔ)句可以是delete、updat(yī)e、insert等或兼有?24、Java數(shù)據(jù)庫(kù)操作基本流程:取得數(shù)據(jù)庫(kù)連接、執(zhí)行sql語(yǔ)句、解決執(zhí)行結(jié)果、釋放數(shù)據(jù)庫(kù)連接。25、下列程序的功能是在監(jiān)控臺(tái)上每隔一秒鐘顯示一個(gè)字符串“Hello”,可以填寫在程序中下劃線位置,使程序完整并能對(duì)的運(yùn)營(yíng)的語(yǔ)句是publicclassTestimplementsRunnable{publicstaticvoidmain(Stringargs[]){Testt=newTest();Threadtt=newThread(t);tt.start();}publicvoidrun(){for(;;){try{;}cat(yī)ch(e){}System.put.println("Hello");}}}答: Thread.sleep(1000)InterruptedException三、簡(jiǎn)答與程序分析、填空、設(shè)計(jì)題第一部分:簡(jiǎn)答1、線程的生命期內(nèi)涉及哪些狀態(tài)?答:新建狀態(tài)、就緒狀態(tài)、運(yùn)營(yíng)狀態(tài)、阻塞狀態(tài)、死亡狀態(tài)見(jiàn)下圖:各狀態(tài)之間的切換關(guān)系死亡死亡創(chuàng)建阻塞就緒運(yùn)營(yíng)2、什么是線程的新建狀態(tài)?答:線程對(duì)象已經(jīng)創(chuàng)建,還沒(méi)有在其上調(diào)用start()方法。3、什么是線程的可運(yùn)營(yíng)狀態(tài)?答:當(dāng)線程有資格運(yùn)營(yíng),但調(diào)度程序還沒(méi)有把它選定為運(yùn)營(yíng)線程時(shí)線程所處的狀態(tài)。當(dāng)start()方法調(diào)用時(shí),線程一方面進(jìn)入可運(yùn)營(yíng)狀態(tài)。在線程運(yùn)營(yíng)之后或者從阻塞、等待或睡眠狀態(tài)回來(lái)后,也返回到可運(yùn)營(yíng)狀態(tài)。4、什么是線程的死亡態(tài)?答:當(dāng)線程的run()方法完畢時(shí)就認(rèn)為它死去。這個(gè)線程對(duì)象也許是活的,但是,它已經(jīng)不是一個(gè)單獨(dú)執(zhí)行的線程。線程一旦死亡,就不能復(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();DatagramPacketdgp=newDatagramPacket(str,str.length(),目的主機(jī),目的端口);介紹使用javaSocket創(chuàng)建客戶端Socket的過(guò)程。?答:try{?Socketsocket=newSocket(目的主機(jī),目的端口);
}catch(IOExceptione){
System.out.println("Error:"+e);
}
8、介紹使用javaServerSocket創(chuàng)建服務(wù)器端ServerSocket的過(guò)程。
答:ServerSocketserver=null;?try{?server=newServerSocket(監(jiān)聽(tīng)端口);?}catch(IOExceptione){
System.out.println("cannotlistento:"+e);
}
Socketsocket=null;?try{?socket=server.accept();
}cat(yī)ch(IOExceptione){
System.out.println("Error:"+e);
}
9、寫出一種使用java流式套接式編程時(shí),創(chuàng)建雙方通信通道的語(yǔ)句。答:PrintStreamos=newPrintStream(newBufferedOutputStreem(socket.getOutputStream()));
DataInputStreamis=newDat(yī)aInputStream(socket.getInputStream());?PrintWriterout=newPrintWriter(socket.getOutStream(),true);?BufferedReaderin=newButfferedReader(newInputSteramReader(Socket.getInputStream()));?10、對(duì)于建立功能齊全的Socket,其工作過(guò)程包含以下四個(gè)基本的環(huán)節(jié):
(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)銷較小,傳輸大小限制在64K以下,不需要建立連接。寫出DatagramSocket的常用構(gòu)造方法:答:Dat(yī)agramSocket();
DatagramSocket(intprot);
DatagramSocket(intport,InetAddressladdr)
port指明socket所使用的端標(biāo)語(yǔ),假如未指明端標(biāo)語(yǔ),則把socket連接到本地主機(jī)上一個(gè)可用的端口。laddr指明一個(gè)可用的本地地址。13、介紹一下DatagramPacket的常用構(gòu)造方法:?DatagramPacket(bytebuf[],intlength);?DatagramPacket(bytebuf[],intlength,InetAddressaddr,intport);
DatagramPacket(byte[]buf,intoffset,intlength);
Dat(yī)agramPacket(byte[]buf,intoffset,intlength,InetAddressaddress,intport);
其中,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ǔ)句:答:bytebuf[]=newbyte[n];DatagramPacketpacket=newDat(yī)agramPacket(buf,n);?Socket.receive(packet);
15、寫出java程序中用Statement來(lái)執(zhí)行sql查詢與更新語(yǔ)句Stringsql;//表達(dá)查詢或更新的操作語(yǔ)句;
Statementsm=cn.createStat(yī)ement();//cn表達(dá)數(shù)據(jù)庫(kù)連接sm.executeQuery(sql);//執(zhí)行數(shù)據(jù)查詢語(yǔ)句(select)
sm.executeUpdat(yī)e(sql);//執(zhí)行數(shù)據(jù)更新語(yǔ)句(delete、update、insert、drop等)statement.close();16.什么叫流?流式輸入輸出有什么特點(diǎn)?17.Java流被分為字節(jié)流、字符流兩大流類,兩者有什么區(qū)別?18.File類有哪些構(gòu)造函數(shù)和常用方法?16.答:所謂流是指同一臺(tái)計(jì)算機(jī)或網(wǎng)絡(luò)中不同計(jì)算機(jī)之間有序運(yùn)動(dòng)著的數(shù)據(jù)序列,Java把這些不同來(lái)源和目的的數(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類的直接子類,基本輸入流(InputStream)和基本輸出流(OutputStream)是解決以8位字節(jié)為基本單位的字節(jié)流類;Reader和Writer類是專門解決16位字符流的類。18.答:構(gòu)造函數(shù)有:(1)publicFile(Stringpathname):創(chuàng)建一個(gè)相應(yīng)于參數(shù)pathname的File類對(duì)象。參數(shù)pathname是包含目錄和文獻(xiàn)名的字符串。假如沒(méi)有文獻(xiàn)名,則代表目錄。(2)publicFile(Stringparent,Stringchild):該構(gòu)造函數(shù)將pathname提成兩部分parent和child,參數(shù)parent表達(dá)目錄或文獻(xiàn)所在途徑,參數(shù)child表達(dá)目錄或文獻(xiàn)名稱。(3)publicFile(Fileparent,Stringchild):該構(gòu)造函數(shù)與上面一個(gè)不同在于將parent的參數(shù)類型由String變?yōu)椋苅le,代表parent是一個(gè)已經(jīng)創(chuàng)建的File類文獻(xiàn)對(duì)象(指向目錄)。常用方法有:(1)publicbooleancanWrite():返回文獻(xiàn)是否可寫。(2)publicbooleancanRead():返回文獻(xiàn)是否可讀。(3)publicbooleancreateNewFile():當(dāng)文獻(xiàn)不存在時(shí)創(chuàng)建文獻(xiàn)。19.位置指針的作用是什么?RandomAccessFile類提供了哪些方法實(shí)現(xiàn)對(duì)指針的控制?19.答:要實(shí)現(xiàn)對(duì)文獻(xiàn)的隨機(jī)讀取,也就是在文獻(xiàn)的任何位置執(zhí)行讀寫數(shù)據(jù)的操作,需要一個(gè)指針來(lái)指定讀寫的位置。在創(chuàng)建RandomAccessFile類對(duì)象的同時(shí),系統(tǒng)自動(dòng)創(chuàng)建了一個(gè)指向這個(gè)文獻(xiàn)開(kāi)頭的指針,當(dāng)執(zhí)行讀寫操作后,指針自動(dòng)指向被讀寫數(shù)據(jù)之后的第一個(gè)字節(jié)處。指針初始值是0,每讀/寫一個(gè)字節(jié),指針自動(dòng)增長(zhǎng)1。RandomAccessFile類提供了一些控制指針移動(dòng)的方法。publiclonggetFilePointer();獲取當(dāng)前指針指向文獻(xiàn)的位置。pulbicvoidseek(longpos);將指針移動(dòng)到參數(shù)pos指定的位置。publicintskipBytes(intn);指針從當(dāng)前位置向后移動(dòng)n個(gè)字節(jié)位置,并返回指針實(shí)際移動(dòng)的字節(jié)數(shù)。20、第二部分:分析程序功能或完畢程序1、分析下列程序功能importjava.io.*;classStreamTest{publicstat(yī)icvoidmain(String[]args)throwsException{FileOutputStreamfos=newFileOutputStream("testBuffer.txt");BufferedOutputStreambos=newBufferedOutputStream(fos);bos.write("HelloJava!".getBytes());bos.close();}}2、運(yùn)用文獻(xiàn)輸入輸出流編寫一個(gè)實(shí)現(xiàn)文獻(xiàn)拷貝的程序,源文獻(xiàn)名和目的文獻(xiàn)名通過(guò)命令行參數(shù)傳入。答:importjava.io.*;classCopyFile{publicstaticvoidmain(String[]args){Stringfile1,file2;intch=0;try{file1=args[0];file2=args[1];FileInputStreamfis=newFileInputStream(file1);FileOutputStreamfos=newFileOutputStream(file2);while((ch=fis.read())!=-1)fos.write(ch);fis.close();fos.close();}catch(FileNotFoundExceptione){System.out.println("源文獻(xiàn):未找到!");}cat(yī)ch(ArrayIndexOutOfBoundsExceptione){System.out.println("缺少運(yùn)營(yíng)參數(shù)!");System.exit(-1);}cat(yī)ch(IOExceptione){System.out.println(e.toString());}}}3、編寫一個(gè)程序,在當(dāng)前目錄下創(chuàng)建一個(gè)子目錄test,在這個(gè)新創(chuàng)建的子目錄下創(chuàng)建一個(gè)文獻(xiàn),并把這個(gè)文獻(xiàn)設(shè)立成只讀。3.答:importjava.io.*;publicclassNewFile{publicstat(yī)icvoidmain(Stringargs[]){Filef=newFile("test");if(f.exists()&&f.isDirectory())System.err.println("目錄:"+f.toString()+"已經(jīng)存在!");else{if(f.mkdir()){System.out.println("目錄"+f.getAbsolutePat(yī)h()+"創(chuàng)建結(jié)束!");Filef2=newFile(f,"my.txt");try{f2.createNewFile();f2.setReadOnly();}catch(IOExceptione){System.out.println(e.toString());}System.out.println("文獻(xiàn):"+f2.getAbsoluteFile()+"創(chuàng)建結(jié)束!");}elseSystem.out.println("目錄"+f.getAbsoluteFile()+"創(chuàng)建失敗!");}}}4、編寫一個(gè)程序,從鍵盤輸入一串字符,記錄這串字符中英文字母、數(shù)字、其他符號(hào)的字符數(shù)。4.答:importjava.io.*;publicclassCount{publicstaticvoidmain(String[]args){intx=0,y=0,z=0;intch;try{while((ch=System.in.read())!='\r'){if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')x++;elseif(ch>='0'&&ch<='9')y++;elsez++;}}catch(IOExceptione){System.out.println(e.toString());}System.out.println("英文字母:"+x);System.out.println("數(shù)字字符:"+y);System.out.println("其它字符:"+z);}}5.編寫一個(gè)程序,從鍵盤輸入一串字符,從屏幕輸出并將其存入a.txt文獻(xiàn)中。5.答:importjava.io.*;publicclassInFile{publicstat(yī)icvoidmain(String[]args){intch;try{FileOutputStreamout=newFileOutputStream("a.txt");while((ch=System.in.read())!='\r'){System.out.write(ch);out.write(ch);}out.close();System.out.write('\n');}catch(IOExceptione){System.out.println(e.toString());}System.out.println("輸出至文獻(xiàn)完畢!");}}6.編寫一個(gè)程序,從鍵盤輸入10個(gè)整數(shù),并將這些數(shù)據(jù)排序后在標(biāo)準(zhǔn)輸出上輸出。6.答:importjava.io.*;publicclassSort{publicstaticvoidmain(Stringargs[]){inta[]=newint[10];byteb[]=newbyte[10];intt;Stringstr;System.out.println("請(qǐng)輸入10個(gè)整數(shù):");try{for(inti=0;i<10;i++){System.out.print("No."+(i+1)+":");System.in.read(b);str=newString(b);str=str.trim();a[i]=Integer.parseInt(str);}}catch(IOExceptione){System.out.println(e.toString());}catch(NumberFormatExceptione){System.out.println(e.toString());}for(inti=0;i<9;i++)for(intj=i+1;j<10;j++){if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}for(inti=0;i<10;i++)System.out.println(a[i]+"\t");}}下列程序用于顯示指定目錄下的子目錄及文獻(xiàn)名,請(qǐng)?zhí)顚懰鄙俚拇a;importjava.io.*;publicclasssy2_1{publicstat(yī)icvoidmain(Stringargs[]){Strings1,s2[];try{InputStreamReaderiin=newInputStreamReader(System.in);BufferedReaderbin=newBufferedReader(iin);System.out.println("請(qǐng)輸入一個(gè)文獻(xiàn)名:");s1=bin.readLine();//讀入文獻(xiàn)名Filef=newFile(s1);System.out.println(f.isDirectory());if(f.isDirectory())//判斷是否為目錄;{intn=(f.list()).length;?s2=newString[n]; s2=f.list();//獲取子目錄及文獻(xiàn)名;?for(inti=0;i<s2.length;i++) System.out.println(s2[i]);}}catch(IOExceptione){}}}8、下列程序向屏幕輸出文本文獻(xiàn)內(nèi)容:請(qǐng)完畢所缺少的代碼importjava.io.*;classreadtxt{publicstaticvoidmain(String[]args){try{FileReaderf1=newFileReader("u.txt");BufferedReaderbf1=newBufferedReader(f1);Stringline;line=bf1.readLine();while(line?。剑睿酰靗)//判斷所讀的一行內(nèi)容是否為空;{System.out.println(line);line=bf1.readLine();//繼續(xù)讀入下一行}bf1.close();//關(guān)閉文獻(xiàn)的輸入流;}catch(IOExceptione){e.printStackTrace();}}}9、編寫程序?qū)崿F(xiàn):程序運(yùn)營(yíng)后共有3個(gè)線程,分別輸出10次線程的名稱:main,thread-0,thread-1.答:略10、請(qǐng)編寫java程序,訪問(wèn)答:publicclassURLReader{?publicstaticvoidmain(String[]args)throwsException{/聲明拋出所有例外
URLtirc=newURL("");//構(gòu)建一URL對(duì)象?BufferedReaderin=newBufferedReader(newInputStreamReader(tirc.openStream()));
//使用openStream得到一輸入流并由此構(gòu)造一個(gè)BufferedReader對(duì)象
StringinputLine;?while((inputLine=in.readLine())!=null)//從輸入流不斷的讀數(shù)據(jù),直到讀完為止?System.out.println(inputLine);//把讀入的數(shù)據(jù)打印到屏幕上?in.close();//關(guān)閉輸入流
}
}11、從鍵盤上輸入主機(jī)名稱,編寫類似ping的程序,測(cè)試連接效果。importjava.net.*;importjava.io.*;classPing{ publicstaticvoidmain(String[]args){System.out.println("請(qǐng)輸入ping主機(jī)名稱或地址:\n");try{ Stringhost=keyreadline();InetAddressip=InetAddress.getByName(host);longt1=System.currentTimeMillis();if(ip.isReachable(5000)){longt2=System.currentTimeMillis();System.out.println("\nReplyfrom"+ip.getHostAddress()+"time<="+(t2-t1)+"ms");System.out.println();}else{System.out.println("Requesttimedout.");}}cat(yī)ch(IOExceptione){System.out.println("Requesttimedout.");}}privat(yī)estaticStringkeyreadline(){BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));Stringstr=null;try{str=br.readLine();}catch(IOExceptione){e.printStackTrace();}returnstr;}}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)編寫程序完畢此功能。mportjava.net.*;importjava.io.*;classServer{publicServer(){try{ServerSocketss=newServerSocket(8629);System.out.println("服務(wù)器端已運(yùn)營(yíng),等待客戶端連接:");Socketsocket=ss.accept();//接受客戶端的連接請(qǐng)求;BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));PrintWriterout=newPrintWriter(socket.getOutputStream(),true);BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));Stringline;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);//向?qū)Ψ桨l(fā)送信息}}catch(IOExceptione){}}publicstaticvoidmain(String[]args)throwsException{newServer();}}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ā)送信息。importjava.io.*;importjava.net.*;classClient2{publicClient2(){try{Strings;Socketsocket=newSocket("服務(wù)器地址",8629);BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));PrintWriterout=newPrintWriter(socket.getOutputStream(),true);BufferedReaderline=newBufferedReader(newInputStreamReader(System.in));while(true){System.out.println("請(qǐng)向服務(wù)器輸出一條字符串:");s=line.readLine();out.println(s);//向服務(wù)器發(fā)出信息;s=in.readLine().trim();//收到服務(wù)器發(fā)來(lái)的信息;System.out.println("服務(wù)器返回的信息是:");System.out.println(s);if(s.equals("BYE")){out.println("BYE");line.close();out.close();in.close();socket.close();break;}}}catch(IOExceptione){}}publicstaticvoidmain(String[]args){newClient2();}}14、UDP接受端importjava.io.*;importjava.net.*;classServer{publicstaticvoidmain(String[]args){newUDPServer();}}classUDPServer{publicUDPServer(){try{DatagramSocketsocket=newDatagramSocket(1986);//建立一個(gè)Socket連接System.out.println("服務(wù)器IP:"+InetAddress.getLocalHost().getHostAddress());//顯示服務(wù)器信息while(true){//接受byte[]instr=newbyte[200];DatagramPacketreceive=newDatagramPacket(instr,instr.length);socket.receive(receive);//接受客戶機(jī)發(fā)過(guò)來(lái)的數(shù)據(jù)Stringstr=newString(receive.getDat(yī)a());//提取數(shù)據(jù)if(str.trim().equals("BYE")){socket.close();break;}System.out.println("收到客戶端消息:"+str.trim());//打印客戶機(jī)消息//發(fā)送System.out.print("服務(wù)器發(fā)送消息:");str=newBufferedReader(newInputStr
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院老人家庭溝通制度
- 數(shù)碼產(chǎn)品租賃合同(2篇)
- 2024年物業(yè)設(shè)施管理合同3篇
- 2025年平頂山貨運(yùn)駕駛員從業(yè)資格證考試題庫(kù)答案
- 2025年林芝貨運(yùn)從業(yè)資格證模擬考試下載
- 2025年懷化經(jīng)營(yíng)性道路客貨運(yùn)輸駕駛員從業(yè)資格考試
- 《催眠治療》課件
- 2024年教育設(shè)施融資租賃擔(dān)保合同示例2篇
- 2025年?yáng)|莞a2駕駛證貨運(yùn)從業(yè)資格證模擬考試
- 2024年版礦業(yè)開(kāi)發(fā)合同
- 中華民族現(xiàn)代文明有哪些鮮明特質(zhì)?建設(shè)中華民族現(xiàn)代文明的路徑是什么?參考答案
- 2024年云南省昆明市公安局勤務(wù)輔警崗位招聘260人歷年高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 2024年江蘇省徐州市中考數(shù)學(xué)試卷(附答案)
- 2024年初級(jí)美容師資格證考試試題及答案
- 2024-2030年中國(guó)固體氧化物燃料電池(SOFC)行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 高中綜合實(shí)踐課程:設(shè)計(jì)未來(lái)城市(課件)
- 從文學(xué)到電影智慧樹(shù)知到期末考試答案章節(jié)答案2024年山東大學(xué)
- 腹腔鏡下輸尿管膀胱再植術(shù)后護(hù)理查房
- AQ/T 1119-2023 煤礦井下人員定位系統(tǒng)通 用技術(shù)條件(正式版)
- 國(guó)家中醫(yī)藥管理局發(fā)布的406種中醫(yī)優(yōu)勢(shì)病種診療方案和臨床路徑目錄
- 體育賽事組織流程圖所有
評(píng)論
0/150
提交評(píng)論