资源描述
V大发大纲
Java网络编程期末复习题(I/O、多线程、网络编程、数据库操作)
一、单选题
1、下列关于Java线程说法那些是对的( )
A、每一种Java线程可以当作由代码、一种真实CPU以及数据三部份构成。
B、创立线程两种办法中,从Thread类中继承创立方式可以防止浮现多父类问题。
C、Thread类属于java.util程序包。
D、以上说法无一对的。
2、运营下列程序,会产生什么成果?( )
public class X extends Thread implements Runable{
public void run(){
System.out.println("this is run()");
}
public static void main(String args[]) {
Thread t=new Thread(new X());
t.start();
}
}
A、第一行会产生编译错误
B、第六行会产生编译错误
C、第六行会产生运营错误
D、程序会运营和启动
3、下列选项中,用于定义接口核心字是( )
A、import
B、implements
C、interface
D、protected
4.定义类头时能使用修饰符是( )。
A) private B) static C) abstract D) protected
5、下面哪个办法不可以在任何时候被任何线程调用?( )
A、wait()
B、sleep()
C、yield()
D、synchronized(this)
6. 下列关于线程优先级说法中,对的是
A) 线程优先级是不能变化
B) 线程优先级是在创立线程时设立
C) 在创立线程后任何时候都可以设立
D) B和C
7.线程生命周期中对的状态是
A) 新建状态、运营状态和终结状态
B) 新建状态、运营状态、阻塞状态和终结状态
C) 新建状态、可运营状态、运营状态、阻塞状态和终结状态
D) 新建状态、可运营状态、运营状态、恢复状态和终结状态
8.Thread类中能运营线程体办法是
A) start() B) resume()
C) init() D) run()
9在程序读入字符文献时,可以以该文献作为直接参数类是
A) FileReader B) BufferedReader
C) FileInputStream D) ObjectInputStream
10)java.io包File类是
A) 字符流类 B) 字节流类
C) 对象流类 D) 非流类
11)下列描述中,对的是
A) 在Serializable接口中定义了抽象办法
B) 在Serializable接口中定义了常量
C) 在Serializable接口中没有定义抽象办法,也没有定义常量
D) 在Serializable接口中定义了成员办法
12. java中用于创立文献对象类是( )
A.File B. Object C. Thread D. Frame
13. 从键盘上输入一种字符串创立文献对象,若要判断该文献对象为目录文献或数据文献,可使用下列哪个办法?( )
A.getPath() B. getName() C.isFile() D. isAbsolute()
14. 下列哪个类不对直接创立对象?( )
A.InputStream B. FileInputStream C. BufferedInputStream D. DataInputStream
15. 从键盘上输入各种字符时,为了避免回车换行符影响,需要使用下列哪个流办法?( )
A.write() B. flush() C. close() D. skip()
16. 以对象为单位把某个对象写入文献,则需要使用什么办法? ( )
A. writeInt() B writeObject() C. write() D.writUTF()
17. 下列哪个类办法可以直接把简朴数据类型写入文献?( )
A.OutputStream B. BufferedWriter C. ObjectOutputStream. D.FileWriter
18. 若一种类对象能被整体写入文献,则定义该类时必要实现下列哪个接口?( )
A.Runnable B. ActionListener C. WindowsAdapter D. Serializable
19. 下列哪种类型数据能以对象形式写入文献?( )
A.String B. Frame C. Dialog D. Button
20. File类办法中,用于列举某目录下子目录及文献办法是( )
A.long length() B. long lastModified() C. String [] list() D. String getName()
21. 可以以字符串为单位写入文献数据流类是( )
A. FileOutputStream B. FileWriter C. BufferedWriter C. OutputStream
22. 可以向文献输入逻辑型数据类是:( )
A. FileOutputStream B. OutputStream C. FileWriter D.DataOutputStream
23. 在线程同步中, 为了唤醒另一种等待线程,使用下列办法( )
A. sleep() B. wait() C notify() D. join()
24. 为了得到当前正在运营线程,可使用下列哪个办法?( )
A.getName() B. Thread.CurrentThread(). B. sleep() D. run()
25. 如下( )不属于线程状态。
A.就绪状态 B。运营状态 C。挂起状态 D。独占状态
26.当线程被创立后,其所处状态是( )
A.阻塞状态 B。运营状态 C、就绪状态 D、新建状态
27. 当线程调用start()后,其所处状态为( )
A.阻塞状态 B。运营状态 C、就绪状态 D、新建状态
28. Thread.sleep()办法调用后,当等待时间未到,该线程所处状态为( )
A.阻塞状态 B。运营状态 C、就绪状态 D、新建状态
29.新生状态线程其也许直接进入状态是( )
A.阻塞状态 B、运营状态 C、新建状态 D、结束状态
30.Thread.sleep()办法调用后,当等待时间已到,该线程所处状态为( )
A.阻塞状态 B。运营状态 C、就绪状态 D、新建状态
31.当线程因异常而退出run()后,其所处状态为( )
A.阻塞状态 B。运营状态 C、就绪状态 D、结束状态
32.wait()办法一方面是哪个类办法?( )
A. Object B. Thread. C. Runnable D. File
33. 如果咱们想实现“先把要写入文献数据先缓存到内存中,再把缓存中数据写入文献中”功能时,则需要使用下列哪个类?( )
A. FileReader B. OutputStream C. FilterOutputStream D. DataOutputStream
34. 用read()办法读取文献内容时,判断文献结束标记为( )
A. 0 B. 1 C -1 D. 无标记
35. 如下哪个办法只对使用了缓冲流类起作用?( )
A. read() B. write() C skip() D. flush()
36. Java提供类InetAddress来进行关于Internet地址操作.( )
A. Socket B.ServerSocket C. DatagramSocket D InetAddress
37. InetAddress类中哪个办法可实现正向名称解析?( )
A. isReachable() B. getHostAddress() C. getHosstName() D.getByName()
38. 为了获取远程主机文献内容,当创立URL对象后,需要使用哪个办法获取信息( )
A.getPort() B.getHost C.openStream() D.openConnection()
39. java程序中,使用TCP套接字编写服务端程序套接字类是( )
A. Socket B. ServerSocket C. DatagramSocket D.DatagramPacket
40. ServerSocket监听办法accept()返回值类型是( )
A. void B. Object C. Socket D. DatagramSocket
41. ServerSocketgetInetAddress()返回值类型是( )
A. Socket B ServerSocket D.InetAddress D,.URL
42. 当使用客户端套接字Socket创立对象时,需要指定( )
A.服务器主机名称和端口 B、服务器端口和文献 C、服务器名称和文献
D.服务器地址和文献
43.使用流式套接字编程时,为了向对方发送数据,则需要使用哪个办法( )
A.getInetAddress() B. getLocalPort() C.getOutputStream() D.getInputStream()
44. 使用UDP套接字通信时,惯用哪个类把要发送信息打包? ( )
A. String B. DatagramSocket C. MulticastSocket D.DatagramPacket
45. 使用UDP套接字通信时,哪个办法用于接受数据 ( )
A. read() B. receive() C. accept() D. Listen()
46. 若要获得数据包中源地址,可使用下列哪个语句( )?
A. getAddress() B. getPort() C. getName() D.getData()
47. 要使用java程序访问数据库,则必要一方面与数据库建立连接,在建立连接前,应加载数据库驱动程序,该语句为( )
A Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)
B. DriverManage.getConnection(“”,””,””)
C.Result rs= DriverManage.getConnection(“”,””,””).createStatement()
D. Statement st= DriverManage.getConnection(“”,””,””).createStaement()
48. 要使用java程序访问数据库,则必要一方面与数据库建立连接,该语句为( )
A Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)
B. DriverManage.getConnection(“”,””,””)
C.Result rs= DriverManage.getConnection(“”,””,””).createStatement()
D. Statement st= DriverManage.getConnection(“”,””,””).createStaement()
49. java程序与数据库连接后,需要查看某个表中数据,使用下列哪个语句?( )
A. executeQuery() B.executeUpdate() C executeEdit() D.executeSelect()
50. java程序与数据库连接后,需要查看某个表中数据,使用下列哪个语句?( )
A. executeQuery() B.executeUpdate() C executeEdit() D.executeSelect()
二、填空题
1.Stdout System.out作为PrintStream实例,来实现stdout,它代表是 屏幕
2.Stdin System.in作为InputStream类一种实例来实现stdin,它代表是键盘,你可以使用其中两个成员函数, read()让你从输入中读一种字节,skip(long n)让你在输入中跳过n个字节。
3. Java中IO流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表达(每种流涉及输入和输出两种因此一共四个):InputStream,OutputStream,Reader,Writer。它们通过重载read()和write()办法定义了6个读写操作办法。
4. File类不是一個標準I/O类,在java.io类库中它是唯一non-stream類別,既不能讀取文献內容,也不能修改文献內容,重要作用是收集檔案(或目錄)相關信息,例如:建立文献对象、修改文献名、设立文献属性、测试文献属性
5.目录是一种包括其她文献和途径列表File 类。当你创立一种File 对象且它是目录时,isDirectory( ) 办法返回ture。这种状况下,可以调用该对象String [ ]list( )办法来提取该目录内部其她文献和目录列表
6. 所有输出过滤流都是抽象类_ ____子类。(FilterOutputStream)
7、字符输入流BufferedReader使用了__ ____技术。(PrintStream)
8、InputStreamReader负责将InputStream转化成Reader,而OutputStreamWriter则将OutputStream转化成Writer。事实上是通过byte[]和String来关联。
9、设 a.txt为当前目录下一种文本文献,则以字符方式向该文献写数据时,需要建立输出流通道为:new FileWriter(“a.txt”);
10. 随机访问文献类是RandomAccessFile,它实现了与DataInputStream,DataOutputStream类同样实现接口DataInput,DataOutput.。
11.实现多线程两种方式是:1、继承Thread类;2、实现Runnable接口。
12、获得当前线程语句是: Thread.currentThread();
13.主线程名称是main, 默认创立第一种子线程名称是thread-0
14. 可以调用 Thread 类办法 getPriority() 和 setPriority()来存取线程优先级,线程优先级界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之间,缺省是5(NORM_PRIORITY)。
15.(1) 当各种线程同步运营时,会产生数据错误及其他冲突问题。Java语言提供了线程同步控制机制,一是 锁定共享资源,使得在任何时刻只有一种线程可以访问共享资源,以保持共享资源完整和一致,二是让互相通信线程 运营,以保证通信对的性。
(2)线程之间通信有两种办法:一是把共享变量和办法封闭在一种类中,二是运用系统办法 和 控制线程通信. 实现对共享资源互拆访问办法是在办法声明中加入synchronized核心字来声明一种访问共享资源办法,或者通过 synchronized核心字来声明synchronized 块。
16、守护线程普通被用于在后台为其他线程提供服务。调用办法 isDaemon() 来判断一种线程与否是守护线程,也可以调用办法setDaemon()将一种线程设为守护线程。
17、InetAddress是用于封装IP地址和DNS一种类。
18、TCP/IP套接字是最可靠双向流合同。等待客户端服务器使用ServerSocket类,而要连接到服务器客户端则使用Socket类。
19、包中提供了一种类MulticastSocket,容许数据报以广播方式发送到该端口所有客户。
20. 在TCP/IP合同传播层除了TCP合同之外尚有一种UDP合同。几种原则应用层合同HTTP,FTP,SMTP…使用都是TCP合同。 UDP合同重要用于需要很强实时交互性场合,如网络游戏,视频会议等
21、当咱们得到一种URL对象后,就可以通过它读取指定WWW资源。这时咱们将使用URL办法openStream(),其定义为:InputStream openStream();
22、URL构造办法都声明抛弃非运营时异常 MalformedURLException ,因而生成URL对象时,咱们必要要对这一例外进行解决,普通是用try-catch语句进行捕获。
23、一种Statement对象,可以执行各种sql语句后来,批量更新。这各种语句可以是delete、update、insert等或兼有
24、Java数据库操作基本流程:获得数据库连接 、执行sql语句、解决执行成果、释放数据库连接。
25、下列程序功能是在监控台上每隔一秒钟显示一种字符串“Hello”,可以填写在程序中下划线位置,使程序完整并能对的运营语句是
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
三、简答与程序分析、填空、设计题
第一某些:简答
1、线程生命期内涉及哪些状态?
答:新建状态、就绪状态、运营状态、阻塞状态、死亡状态
见下图:各状态之间切换关系
死亡
创立
阻塞
就绪
运营
2、什么是线程新建状态?
答: 线程对象已经创立,还没有在其上调用start()办法。
3、什么是线程可运营状态?
答:当线程有资格运营,但调度程序还没有把它选定为运营线程时线程所处状态。当start()办法调用时,线程一方面进入可运营状态。在线程运营之后或者从阻塞、等待或睡眠状态回来后,也返回到可运营状态。
4、什么是线程死亡态?
答:当线程run()办法完毕时就以为它死去。这个线程对象也许是活,但是,它已经不是一种单独执行线程。线程一旦死亡,就不能复生。 如果在一种死去线程上调用start()办法,会抛出java.lang.IllegalThreadStateException异常。
5、调用join()办法有何作用?
答: 保证当前线程停止执行,直到该线程所加入线程完毕为止。然而,如果它加入线程没有存活,则当前线程不需要停止。
6.既有字符串S=”hello,java!”,则以此字符串生成待发送DatagramPacket包dgp语句是:
答:
Byte[] str=s.getbytes();
DatagramPacket dgp=new DatagramPacket(str,str.length(),目主机,目端口);
7、 简介使用java Socket创立客户端Socket过程。
答:try{
Socket socket=new Socket(目的主机,目的端口);
}catch(IOException e){
System.out.println("Error:"+e);
}
8、简介使用java ServerSocket创立服务器端ServerSocket过程。
答:
ServerSocket server=null;
try {
server=new ServerSocket(监听端口);
}catch(IOException e){
System.out.println("can not listen to :"+e);
}
Socket socket=null;
try {
socket=server.accept();
}catch(IOException e){
System.out.println("Error:"+e);
}
9、写出一种使用java流式套接式编程时,创立双方通信通道语句。
答:
PrintStream os=new PrintStream(new BufferedOutputStreem(socket.getOutputStream()));
DataInputStream is=new DataInputStream(socket.getInputStream());
PrintWriter out=new PrintWriter(socket.getOutStream(),true);
BufferedReader in=new ButfferedReader(new InputSteramReader(Socket.getInputStream()));
10、对于建立功能齐全Socket,其工作过程包括如下四个基本环节:
(1) 创立Socket;
(2) 打开连接到Socket输入/出流;
(3) 按照一定合同对Socket进行读/写操作;
(4) 关闭Socket.
11、简述基于TCP及UDP套接字通信重要区别
答:TCP,可靠,传播大小无限制,但是需要连接建立时间,差错控制开销大。
UDP,不可靠,差错控制开销较小,传播大小限制在64K如下,不需要建立连接。
12、 写出DatagramSocket惯用构造办法:
答:
DatagramSocket();
DatagramSocket(int prot);
DatagramSocket(int port,InetAddress laddr)
port指明socket所使用端标语,如果未指明端标语,则把socket连接到本地主机上一种可用端口。laddr指明一种可用本地地址。
13、简介一下DatagramPacket惯用构造办法 :
DatagramPacket(byte buf[],int length);
DatagramPacket(byte buf[],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中存储数据报数据,length为数据报中数据长度,addr和port旨明目地址,offset指明了数据报位移量。
14、在接受端接受数据报重要语句:
答: byte buf[ ]=new byte[n];
DatagramPacket packet=new DatagramPacket(buf,n);
Socket.receive (packet);
15、写出java程序中用Statement来执行sql查询与更新语句
String sql; //表达查询或更新操作语句;
Statement sm = cn.createStatement(); //cn表达数据库连接
sm.executeQuery(sql);// 执行数据查询语句(select)
sm.executeUpdate(sql);// 执行数据更新语句(delete、update、insert、drop等)
statement.close();
16.什么叫流?流式输入输出有什么特点?
17.Java流被分为字节流、字符流两大流类,两者有什么区别?
18.File类有哪些构造函数和惯用办法?
16.答:所谓流是指同一台计算机或网络中不同计算机之间有序运动着数据序列,Java把这些不同来源和目的数据都统一抽象为数据流。数据流可分为输入流和输出流,输入流代表从其她设备流入计算机数据序列,输出流代表从计算机流向外部设备数据序列。
流式输入输出特点是数据获取和发送沿数据序列顺序进行,即每一种数据都必要等待排在它前面数据,等前面数据读入或送出之后才干被读写。因此流和队列同样,只能以“先进先出”方式对其中数据进行读写,而不能随意选取读写位置。
17.答:两者都作为Object类直接子类,基本输入流(InputStream)和基本输出流(OutputStream)是解决以8位字节为基本单位字节流类;Reader和Writer类是专门解决16位字符流类。
18.答:构造函数有:
(1)public File(String pathname):创立一种相应于参数pathnameFile类对象。参数pathname是包括目录和文献名字符串。如果没有文献名,则代表目录。
(2)public File(String parent ,String child):该构造函数将pathname提成两某些parent和child,参数parent表达目录或文献所在途径,参数child表达目录或文献名称。
(3)public File(File parent,String child):该构造函数与上面一种不同在于将parent参数类型由String变为File,代表parent是一种已经创立File类文献对象(指向目录)。
惯用办法有:
(1)public boolean canWrite( ):返回文献与否可写。
(2)public boolean canRead( ):返回文献与否可读。
(3)public boolean createNewFile( ):当文献不存在时创立文献。
19.位置指针作用是什么?RandomAccessFile类提供了哪些办法实现对指针控制?
19.答:要实现对文献随机读取,也就是在文献任何位置执行读写数据操作,需要一种指针来指定读写位置。在创立RandomAccessFile类对象同步,系统自动创立了一种指向这个文献开头指针,当执行读写操作后,指针自动指向被读写数据之后第一种字节处。指针初始值是0,每读/写一种字节,指针自动增长1。RandomAccessFile类提供了某些控制指针移动办法。
public long getFilePointer();获取当前指针指向文献位置。
pulbic void seek(long pos);将指针移动到参数pos指定位置。
public int skipBytes(int n);指针从当前位置向后移动n个字节位置,并返回指针实际移动字节数。
20、
第二某些:分析程序功能或完毕程序
1、分析下列程序功能
import java.io.*;
class StreamTest{
public static void main(String[] args)throws Exception{
FileOutputStream fos=new FileOutputStream("testBuffer.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);
bos.write("Hello Java!".getBytes());
bos.close();
}
}
2、运用文献输入输出流编写一种实现文献拷贝程序,源文献名和目的文献名通过命令行参数传入。
答:
import java.io.*;
class CopyFile{
public static void main(String[] args) {
String file1,file2 ;
int ch = 0 ;
try {
file1=args[0];
file2=args[1];
FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos=new 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("缺少运营参数!");
System.exit(-1);
}
catch (IOException e){
System.out.println(e.toString());
}
}
}
3、编写一种程序,在当前目录下创立一种子目录test,在这个新创立子目录下创立一种文献,并把这个文献设立成只读。
3.答:
import java.io.*;
public class NewFile{
public static void main(String args[]){
File f=new File("test");
if(f.exists()&&f.isDirectory())
System.err.println("目录:"+f.toString()+"已经存在!");
else{
if(f.mkdir()){
System.out.println("目录"+f.getAbsolutePath()+"创立结束!");
File f2=new File(f,"my.txt");
try{
f2.createNewFile();
f2.setReadOnly();
}catch(IOException e){
System.out.println(e.toString());
}
System.out.println("文献:"+f2.getAbsoluteFile()+"创立结束!");
}
else
System.out.println("目录"+f.getAbsoluteFile()+"创立失败!");
}
}
}
4、编写一种程序,从键盘输入一串字符,记录这串字符中英文字母、数字、其她符号字符数。
4.答:
import java.io.*;
public class Count{
public static void main(String[] args)
{
int x=0,y=0,z=0;
int ch;
try{
while((ch=System.in.read())!='\r'){
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')
x++;
else if(ch>='0'&&ch<='9')
y++;
else
z++;
}
}catch(IOException e){
System.out.println(e.toString());
}
System.out.println("英文字母:"+x);
System.out.println("数字字符:"+y);
System.out.println("其他字符:"+z);
}
}
5.编写一种程序,从键盘输入一串字符,从屏幕输出并将其存入a.txt文献中。
5.答:
import java.io.*;
public class InFile{
public static void main(String[] args)
{
int ch;
try{
FileOutputStream 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(IOException e){
System.out.println(e.toString());
}
System.out.println("输出至文献完毕!");
}
}
6.编写一种程序,从键盘输入10个整数,并将这些数据排序后在原则输出上输出。
6.答:
import java.io.*;
public class Sort{
public static void main(String args[])
{
int a[]=new int[10];
byte b[]=new byte[10];
int t;
String str;
System.out.println("请输入10个整数:");
try{
for(int i=0;i<10;i++)
{System.out.print("No. "+(i+1)+":");
System.in.read(b);
str=new
展开阅读全文