java網(wǎng)絡(luò)編程復(fù)習(xí)題_第1頁(yè)
java網(wǎng)絡(luò)編程復(fù)習(xí)題_第2頁(yè)
java網(wǎng)絡(luò)編程復(fù)習(xí)題_第3頁(yè)
java網(wǎng)絡(luò)編程復(fù)習(xí)題_第4頁(yè)
java網(wǎng)絡(luò)編程復(fù)習(xí)題_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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)介

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é)果?()

publicclassXextendsThreadimplementsRunable{

publicvoidrun(){

System.out.println("thisisrun()");

}

publicstaticvoidmain(Stringargs[]){

Threadt=newThread(newX());

t.startQ;

)

)

A、第一行會(huì)產(chǎn)生編譯錯(cuò)誤

B、第六行會(huì)產(chǎn)生編譯借誤

C、第六行會(huì)產(chǎn)生運(yùn)行錯(cuò)誤

D、程序會(huì)運(yùn)行和啟動(dòng)

3、下列選項(xiàng)中,用于定義接口的關(guān)鍵字是()

A、import

B、implements

C、interface

D、protected

4.定義類頭時(shí)能運(yùn)用的修飾符是()o

A)privateB)staticC)abstractD)protected

5、下面哪個(gè)方法不行以在任何時(shí)候被任何線程調(diào)用?()

A、wait()

B>sleepO

C、yield()

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í),能夠以該文件作為干脆參數(shù)的類是

A)B)BufferedReader

C)D)ObjectinputStrearn

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ì)象的類是()

A.FileB.ObjectC.ThreadD.Frame

13.從鍵盤上輸入一個(gè)字符串創(chuàng)建文件對(duì)象,若要推斷該文件對(duì)象為書目

文件或數(shù)據(jù)文件,可運(yùn)用下列哪個(gè)方法?()

A.getPath()B.getNameQC.isFileQD.isAbsolutef)

14.下列哪個(gè)類不對(duì)干脆創(chuàng)建對(duì)象?()

A,InputstreamB.C.BufferedlnputStreamD.

DatalnputStream

15.從鍵盤上輸入多個(gè)字符時(shí),為了避開(kāi)回車換行符的影響,須要運(yùn)用下

列哪個(gè)流方法?()

A.write()B.flushf)C.close()D.skip()

16.以對(duì)象為單位把某個(gè)對(duì)象寫入文件,則須要運(yùn)用什么方法?()

A.writelntf)BwriteObject()C.write()D.writUTFQ

17.下列哪個(gè)類的方法能夠干脆把簡(jiǎn)潔數(shù)據(jù)類型寫入文件?()

A?OutputstreamB.BufferedWriterC.

ObjectOutputStream.D.

18.若一個(gè)類對(duì)象能被整體寫入文件,則定義該類時(shí)必需實(shí)現(xiàn)下列哪個(gè)接

口?()

A.RunnableB.ActionListenerC.WindowsAdapterD.

Serializable

19.下列哪種類型的數(shù)據(jù)能以對(duì)象的形式寫入文件?()

A.StringB.FrameC.DialogD.Button

20.File類的方法中,用于列舉某書目下的子書目與文件的方法是()

A.longlengthQB.longlastModifiedf)C.String[]list()D.

StringgetNameQ

21.能夠以字符串為單位寫入文件數(shù)據(jù)的流類是()

A.B.C.BufferedWriterC.Outputstream

22.能夠向文件輸入邏輯型數(shù)據(jù)的類是:()

A.B.OutputstreamC.D.DataOutputStream

23.在線程同步中,為了喚醒另一個(gè)等待的線程,運(yùn)用下列方法()

A.sleepOB.wait()CnotifyOD.join()

24.為了得到當(dāng)前正在運(yùn)行的線程,可運(yùn)用下列哪個(gè)方法?()

A.getNameQB.Thread.CurrentThread().B.sleepOD.

mn()

25.以下()不屬于線程的狀態(tài)。

A.就緒狀態(tài)Bo運(yùn)行狀態(tài)Co掛起狀態(tài)Do獨(dú)占狀態(tài)

26.當(dāng)線程被創(chuàng)建后,其所處的狀態(tài)是()

A.堵塞狀態(tài)Bo運(yùn)行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)

27.當(dāng)線程調(diào)用start。后,其所處狀態(tài)為()

A.堵塞狀態(tài)Bo運(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)Bo運(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)

30.Thread.sleep()方法調(diào)用后,當(dāng)?shù)却龝r(shí)間已到,該線程所處狀態(tài)

為()

A.堵塞狀態(tài)Bo運(yùn)行狀態(tài)C、就緒狀態(tài)D、新建狀態(tài)

31.當(dāng)線程因異樣而退出run。后,其所處狀態(tài)為()

A.堵塞狀態(tài)Bo運(yùn)行狀態(tài)C、就緒狀態(tài)D、結(jié)束狀態(tài)

32.wait。方法首先是哪個(gè)類的方法?()

A.ObjectB.Thread.C.RunnableD.File

33.假如我們想實(shí)現(xiàn)“先把要寫入文件的數(shù)據(jù)先緩存到內(nèi)存中,再把緩

存中的數(shù)據(jù)寫入文件中”的功能時(shí),則須要運(yùn)用下列哪個(gè)類?()

A.B.OutputStreamC.FilterOutputStreamD.

DataOutputStream

34.用read。方法讀取文件內(nèi)容時(shí),推斷文件結(jié)束的標(biāo)記為()

A.0B.1C-1D.無(wú)標(biāo)記

35.以下哪個(gè)方法只對(duì)運(yùn)用了緩沖的流類起作用?()

A.read()B.write()Cskip()D.flushQ

36.Java供應(yīng)的類InetAddress來(lái)進(jìn)行有關(guān)Internet地址的操作.()

A.SocketB.ServerSocketC.DatagramSocketD

InetAddress

37.InetAddress類中哪個(gè)方法可實(shí)現(xiàn)正向名稱解析?()

A.isReachable()B.getHostAddress()C.getHosstName()

D.getByNameQ

38.為了獲得遠(yuǎn)程主機(jī)的文件內(nèi)容,當(dāng)創(chuàng)建URL對(duì)象后,須要運(yùn)用哪個(gè)

方法獲得信息()

A.getPortQB.getHostC.openStream()

D.openConnectionQ

39.java程序中,運(yùn)用TCP套接字編寫服務(wù)端程序的套接字類是()

A.SocketB.ServerSocketC.DatagramSocket

D.DatagramPacket

40.ServerSocket的監(jiān)聽(tīng)方法accept。的返回值類型是()

A.voidB.ObjectC.SocketD.DatagramSocket

41.ServerSocket的getlnetAddress。的返回值類型是()

A.SocketBServerSocketD.InetAddressD,.URL

42.當(dāng)運(yùn)用客戶端套接字Socket創(chuàng)建對(duì)象時(shí),須要指定()

A.服務(wù)器主機(jī)名稱和端口B、服務(wù)器端口和文件C、服務(wù)器名

稱和文件

D.服務(wù)器地址和文件

43.運(yùn)用流式套接字編程時(shí),為了向?qū)Ψ桨l(fā)送數(shù)據(jù),則須要運(yùn)用哪個(gè)方法

()

A.getlnetAddressf)B.getLocalPort()C.getOutputStrearn()

D.getlnputStreaml)

44.運(yùn)用UDP套接字通信時(shí),常用哪個(gè)類把要發(fā)送的信息打包?()

A.StringB.DatagramSocketC.MulticastSocket

D.DatagramPacket

45.運(yùn)用UDP套接字通信時(shí),哪個(gè)方法用于接收數(shù)據(jù)()

A.read()B.receive()C.accept()D.Listen()

46.若要取得數(shù)據(jù)包的中源地址,可運(yùn)用下列哪個(gè)語(yǔ)句()?

A.getAddress()B.getPort()C.getNameQD.getDataQ

47.要運(yùn)用java程序訪問(wèn)數(shù)據(jù)庫(kù),則必需首先與數(shù)據(jù)庫(kù)建立連接,在建

立連接前,應(yīng)加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,該語(yǔ)句為()

AClass.forNamef,sun.jdbc.odbc.JdbcOdbcDriver”)

B.DriverManage.getConnection(9999)

C.Resultrs=

DriverManage.getConnection(").createStatement()

D.Statementst=

DriverManage.getConnection("","”").createStaement()

48.要運(yùn)用java程序訪問(wèn)數(shù)據(jù)庫(kù),則必需首先與數(shù)據(jù)庫(kù)建立連接,該語(yǔ)

句為()

AClass.forNamef"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ù),運(yùn)用下列哪

個(gè)語(yǔ)句?()

A.executeQueryOB.executeUpdateQCexecuteEdit()

D.executeSelect()

50.java程序與數(shù)據(jù)庫(kù)連接后,須要查看某個(gè)表中的數(shù)據(jù),運(yùn)用下列哪

個(gè)語(yǔ)句?()

A.executeQueryOB.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,它

代表的是健盤,你可以運(yùn)用其中兩個(gè)成員函數(shù),read。讓你從輸入中讀一

個(gè)字節(jié),skipQongn)讓你在輸入中跳過(guò)n個(gè)字節(jié)。

3.Java中的IO流分為兩種,一種是字節(jié)流,另一種是字符流,分別由

四個(gè)抽象類來(lái)表示(每種流包括輸入和輸出兩種所以一共四

個(gè)):InputStream,Outputstream,Reader,Writer。它們通過(guò)重載

read()和write()方法定義了6個(gè)讀寫操作方法。

4.File類不是一他襟型的I/O類,在java.io類庫(kù)中它是唯一的

non-streamm,既不能取文件內(nèi)容,也不能修改文件內(nèi)容,主要作

用是收集槽案(或目的相%J信息,例如:建立文件對(duì)象、修改文件名、

設(shè)置文件屬性、測(cè)試文件屬性

5.書目是一個(gè)包含其他文件和路徑列表的File類。當(dāng)你創(chuàng)建一個(gè)File對(duì)

象且它是書目時(shí),isDirectory()方法返回ture。這種狀況下,可以調(diào)用

該對(duì)象的String[]list()方法來(lái)提取該書目?jī)?nèi)部其他文件和書目的列表

6.全部的輸出過(guò)濾諭都是抽象類——的子類。

(FilterOutputStreain)

7、字符輸入流BufferedReader運(yùn)用了一____技術(shù)。

(Printstream)

8、InputStreamReader負(fù)責(zé)將Inputstream轉(zhuǎn)化成Reader,而

OutputStreamWriter貝i]將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("a.txt");

10.隨機(jī)訪問(wèn)文件類是RandomAsessFile,它實(shí)現(xiàn)了與

DatalnputStream,DataOutputStream類同樣實(shí)現(xiàn)的接口Datalnput,

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-O

14.可以調(diào)用Thread類的方法getPriority()和setPriority()來(lái)

存取線程的優(yōu)先級(jí),線程的優(yōu)先級(jí)界于1(MINPRIORITY)和的

(MAXPRIORITY)之間,缺省是5(NORM_PRIORITY)。

15.(1)當(dāng)多個(gè)線程同時(shí)運(yùn)行時(shí),會(huì)產(chǎn)生數(shù)據(jù)錯(cuò)誤與其它沖突問(wèn)題。Java

語(yǔ)言供應(yīng)了線程同步限制機(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)為其它線程供應(yīng)服務(wù)。調(diào)用方法

isDaemonO來(lái)推斷一個(gè)線程是否是守護(hù)線程,也可以調(diào)用方法

setDaemon。將一個(gè)線程設(shè)為守護(hù)線程。

17、InetAddress是用于封裝IP地址和DNS的一個(gè)類。

18、TCP/IP套接字是最牢靠的雙向流協(xié)議。等待客戶端的服務(wù)器運(yùn)用

Serversocket類,而要連接到服務(wù)器的客戶端則運(yùn)用Socket類。

19、java.net包中供應(yīng)了一個(gè)類MuIticastSocket,允許數(shù)據(jù)報(bào)以廣

播方式發(fā)送到該端口的全部客戶。

20.在TCP/IP協(xié)議的傳輸層除了TCP協(xié)議之外還有一個(gè)UDP協(xié)議。

幾個(gè)標(biāo)準(zhǔn)的應(yīng)用層協(xié)議HTTP,…運(yùn)用的都是TCP協(xié)議。UDP協(xié)議主要

用于須要很強(qiáng)的實(shí)時(shí)交互性的場(chǎng)合,如網(wǎng)絡(luò)游戲,視頻會(huì)議等

21、當(dāng)我們得到一個(gè)URL對(duì)象后,就可以通過(guò)它讀取指定的WWW資

源。這時(shí)我們將運(yùn)用URL的方法openStream。,其定義為:InputStream

openStrearn。;

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è)字符串

“Hello”,能夠填寫在程序中下劃線位置,使程序完整并能正確運(yùn)行的語(yǔ)

句是

publicclassTestimplementsRunnable{

publicstaticvoidmainfStringargs[|){

Testt=newTest();

Threadtt=newThread(t);

tt.startQ;

)

publicvoidrun(){

for(;;){

try{

}catch(e){}

System.put.println("Hello");

答:Thread.sleep(l000)

InterruptedException

三、簡(jiǎn)答與程序分析、填空、設(shè)計(jì)題

第一部分:簡(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)系

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í)行的線程。線程一旦死亡,就不能復(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ī),目的端口);

7、介紹運(yùn)用javaSocket創(chuàng)建客戶端Socket的過(guò)程。

答:try{

Socketsocket=newSocket(目標(biāo)主機(jī),目標(biāo)端口);

}catch(IOExceptione){

System.out.println("Error:H+c);

8、介紹運(yùn)用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();

}catch(IOExceptione){

System.out.println("Error:"+e);

9、寫出一種運(yùn)用java流式套接式編程時(shí),創(chuàng)建雙方通信通道的語(yǔ)句。

答:

PrintStreamos=newPrintStreamfnew

BufferedOutputStreem(socket.getOutputStream()));

DatalnputStreamis=new

DataInputStream(socket.getInputStream());

PrintWriterout=newPrintWriter(socket.getOutStream(),true);

BufferedReaderin=newButfferedReaderfnew

InputSteramReader(Socket.getInputStream()));

10、對(duì)于建立功能齊全的Socket,其工作過(guò)程包含以下四個(gè)基本的步驟:

(1)創(chuàng)建Socket;

(2)打開(kāi)連接到Socket的輸入/出流;

(3)依據(jù)確定的協(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以下,

不須要建立連接。

12、寫出DatagramSocket的常用構(gòu)造方法:

答:

DatagramSocket();

DatagramSocket(intprot);

DatagramSocketfintport,InetAddressladdr)

port指明socket所運(yùn)用的端口號(hào),假如未指明端口號(hào),則把socket

連接到本地主機(jī)上一個(gè)可用的端口。laddr指明一個(gè)可用的本地地址。

13>介紹一下DatagramPacket的常用構(gòu)造方法:

DatagramPacket(bytebuf[],intlength);

DatagramPacketfbytebuf[],intlength,InetAddressaddr.int

port);

DatagramPacket(byte[]buf,intoffset,intlength);

DatagramPacket(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=newDatagramPacket(buf.n);

Socket.receive(packet);

15、寫出java程序中用Statement來(lái)執(zhí)行sql杳詢與更新語(yǔ)句

Stringsql;〃表示查詢或更新的操作語(yǔ)句;

Statementsm=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.closeQ;

16.什么叫流?流式輸入輸出有什么特點(diǎn)?

17.Java流被分為字節(jié)流、字符流兩大流類,兩者有什么區(qū)分?

18.File類有哪些構(gòu)造函數(shù)和常用方法?

電簽_所謂流是指同一臺(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類的干脆子類,基本輸入流(Inputstream)

和基本輸出流(Outputstream)是處理以8位字節(jié)為基本單位的字節(jié)流

類;Reader?和Writer類是特地處理16位字符流的類。

18.答:構(gòu)造函數(shù)有:

(1)publicpathname):創(chuàng)建一個(gè)對(duì)應(yīng)于參數(shù)pathname的File類

對(duì)象。參數(shù)pathname是包含書目和文件名的字符串。假如沒(méi)有文件名,

則代表書目。

(2)publicparent,Stringchild):該構(gòu)造函數(shù)將pathname分成兩

部分parent和child,參數(shù)parent表示書目或文件所在路徑,參數(shù)child

表示書目或文件名稱。

(3)publicparent,Stringchild):該構(gòu)造函數(shù)與上面一個(gè)不同在于

將parent的參數(shù)類型由String變?yōu)镕ile,代表parent是一個(gè)已經(jīng)創(chuàng)建

的File類文件對(duì)象(指向書目)。

常用方法有:

(1)publicbooleancanWrite():返[01文件是否可寫。

(2)publicbooleancanRead():返回文件是否可讀。

(3)publicbooleancreateNewFile():當(dāng)文件不存在時(shí)創(chuàng)建文件。

19.位置指針的作用是什么?RandomAccessFile類供應(yīng)了哪些方法實(shí)

現(xiàn)對(duì)指針的限制?

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)增加loRandomAccessFile類供應(yīng)了

一些限制指針移動(dòng)的方法。

publiclongget。;獲得當(dāng)前指針指向文件的位置。

pulbicvoidseek(longpos);將指針移動(dòng)到參數(shù)pos指定的位置。

publicintskipBytesfintn);指針從當(dāng)前位置向后移動(dòng)n個(gè)字節(jié)位置,并

返回指針實(shí)際移動(dòng)的字節(jié)數(shù)。

其次部分:分析程序功能或完成程序

2、利用文件輸入輸出流編寫一個(gè)實(shí)現(xiàn)文件拷貝的程序,源文件名和目標(biāo)

文件名通過(guò)叮囑行參數(shù)傳入。

答:

importjava.io.*;

classCopyFile{

publicstaticvoidmain(String[]args){

String;

intch=0;

try{

[0];

[1];

fis=new(filel);

fos=new(file2);

while((ch=fis.read())!=-l)

fos.write(ch);

fis.closeQ;

fos.closeQ;

)

catch(e){

System.out.println("源文件沫找到!”);

}catch(ArrayIndexOutOfBoundsExceptione){

System.out.printin("缺少運(yùn)行參數(shù)!”);

System.exit(-l);

catch(lOExceptione){

System.out.println(e.toStringO);

}

4、編寫一個(gè)程序,從鍵盤輸入一串字符,統(tǒng)計(jì)這串字符中英文字母、數(shù)

字、其他符號(hào)的字符數(shù)。

4.答:

importjava.io.*;

publicclassCount{

publicstaticvoidmain(String[]args)

{

intx=O,y=O,z=O;

intch;

try{

while((ch=System.in.read())!='\r'){

if(ch>='A'&&ch<=,Z,||ch>='a'&&ch<='z')

x++;

elseif(ch>='0'&&ch<='9')

y++;

else

z++;

}catch(IOExceptione){

System.out.println(e.toStringO);

)

System.out.printin("英文字母:"+x);

System.out.println("數(shù)字字符:"+y);

System.out.printing其它字符:"+z);

)

)

5.編寫一個(gè)程序,從鍵盤輸入一串字符,從屏幕輸出并將其存入a.txt

文件中。

5.答:

importjava.io.*;

publicclassInFile;

publicstaticvoidmain(String[]args)

|

intch;

try{

out=new("a.txt");

while((ch=System.in.read())!=,\r'){

System.out.write(ch);

out.write(ch);

out.closeQ;

System.out.write('\n,);

}catch(IOExceptione){

System.out.println(e.toStringO);

}

System.out.println("輸出至文件完畢!”);

)

)

8、下列程序向屏幕輸出文本文件內(nèi)容:請(qǐng)完成所缺少的代碼

importjava.io.*;

classreadtxt

{

publicstaticvoidmain(String[]args){

try{

fl=newC'u.txt");

BufferedReaderbfl=newBufferedReader(f1);

Stringline;

line=bfl.readLinef);

while(Knel=nun)//推斷所讀的一行內(nèi)容是否為空;

System.out.printin(line);

line=bfl?readLine();//接著讀入下一行

bfl.closeO;〃關(guān)閉文件的輸入流;

}catch(IOExceptione){e.printStackTrace();}

}}

10、請(qǐng)編寫java程序,訪問(wèn)所在的主頁(yè)文件

答:publicclassURLReader{

publicstaticvoidmain(String[]argslthrowsException{/聲

明拋出全部例外

URLtire=newURL(叫;//構(gòu)建一URL對(duì)象

BufferedReaderin=newBufferedReaderfnew

IiwutStreamReader(tirc.openStream()));

//運(yùn)用openStream得到一輸入流并由此構(gòu)造一個(gè)

BufferedReader對(duì)象

StringinputLine;

while((inputLine=in.readLineO)!=null)〃從輸入流不斷的讀

數(shù)據(jù),直到讀完為止

System.outprintln(inputLine);//把讀入的數(shù)據(jù)打印到屏幕

in.close。;〃關(guān)閉輸入流

11、從鍵盤上輸入主機(jī)名稱,編寫類似ping的程序,測(cè)試連接效果。

import.*;

importjava.io.*;

classPing{

publicstaticvoidmain(String[]args)

{System.out.printin("請(qǐng)輸入ping主機(jī)名稱或地址:\n");

try{

Stringhost=keyreadline();

InetAddressip=InetAddress.getByName(host);

longtl=System.currentTimeMillisO;

if(ip.isReachable(5OOO))

{longt2=System.currentTimnMillis();

System.out.println("\nReplyfrom"+ip.getHostAddressQ+

time<=H+(t2-tl)+"ms");

System.out.println();

)

else{System.out.printlnf'Requesttimedout.");

}}

catch(lOExccptionc)

{System.out.printin("Requesttimedout.");}

privatestaticStringkeyreadlinef){

BufferedReaderbr=newBufferedReaderfnew

InputStreamReader(System.in));

Stringstr=null;

try{

str=br.readLinef);

}catch(lOExceptione){

e.printStackTraceQ;}

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)編寫程序完成此功能。

mport.*;

importjava.io.*;

classServer{

publicScrvcr(){

try{

ServerSocketss=newServerSocket(8629);

System.out.println("服務(wù)器端已運(yùn)行,等待客戶端連接:”);

Socketsocket=ss.accept。;//接收客戶端的連接請(qǐng)求;

BufferedReaderin=newBufferedReaderfnew

InputStreamReader(socket.getlnputStreamO));

PrintWriterout=new

PrintWriter(socket.getOutputStream。,true);

BufferedReaderbr=newBufferedReaderfnew

InputStreamReader(System.in));

Stringline;

while(true)

{line=(in.readLine().trim());

if(line?equals(”BYE"))

{out.println("BYE'^);

out.closeQ;

in.close();

socket.close();

br.closeQ;

ss.closeQ;

break;}

System.out.printing客戶輸入為:"+line);

System.out.println("請(qǐng)輸入回答:“);

line=br.readLine();〃從鍵盤上輸入信息;

out.println(line);//向?qū)Ψ桨l(fā)送信息

}}

catch(lOExceptione){}

)

publicstaticvoidmain(String[]args)throwsException!

newServerf);

}

}

13、TCP客戶端須要向服務(wù)器端8629發(fā)出連接請(qǐng)求,與服務(wù)器進(jìn)行信

息溝通,當(dāng)收到服務(wù)器發(fā)來(lái)的是“BYE”時(shí),立刻向?qū)Ψ桨l(fā)送“BYE”,

然后關(guān)閉連接,否則,接著向服務(wù)器發(fā)送信息。

importjava.io.*;

import.*;

classClient2{

publicClient2()

{try

{Strings;

Socketsocket=newSocket("服務(wù)器地址”,8629);

BufferedReaderin=newBufferedReaderfnew

InputStreamReader(socket.getlnputStreamO));

PrintWriterout=new

PrintWriter(socketgetOutputStrearn。,true);

BufferedReaderline=newBufferedReaderfnew

InputStreamReader(System.in));

while(true)

{System.out.println("請(qǐng)向服務(wù)器輸出一條字符串:");

s=line.readLine();

out.println(s);〃向服務(wù)器發(fā)出信息;

s=in-readLineO.trim();//收到服務(wù)器發(fā)來(lái)的信

息;

System.out.println("服務(wù)器返回的信息是:");

System.out.println(s);

ifts.equalsC'BYE0))

{out.println(“BYE”);

line.closeQ;

out.closeQ;

in.closeQ;

socket.closeQ;break;}

catch(lOExccptionc){)

publicstaticvoidmain(String[]args){

newClient2();

})

14、UDP接收端

importjava.io.*;

import.*;

classServer{

publicstaticvoidmain(String[]args){

newUDPServer();}

}

classUDPServer{

publicUDPServerQ{

try{

DatagramSocketsocket=newDatagramSocket(1986);//建立

一個(gè)Socket連接

System.out.println("服務(wù)器IP:"+

InetAddress.getLocalHost().getHostAddress());//顯示服務(wù)器信息

while(true){

//接收

bytc[]instr=newbytc[200];

DatagramPacketreceive=newDatagramPacket(instr,

instr,length);

socket.receive(eeceive);//接收客戶機(jī)發(fā)過(guò)來(lái)的數(shù)據(jù)

Stringstr=newString(receive.getData());//提取數(shù)據(jù)

if(str.trim().equals("BYE"))

{socket.close();break;}

System.out.println("收到客戶端消息:"+str.trim。);//打印客戶

機(jī)消息

//發(fā)送

System.out.print("服務(wù)器發(fā)送消息:”);

str=newBufferedReaderfnew

InputStreamReader(System.in)).readLine();//得至!j輸入的數(shù)據(jù)

byte[]outstr=newbyte[str.length()];

outstr=str.getBytesQ;

Data

溫馨提示

  • 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)論