1、Java 语言程序设计(一)自考题模拟 13 及答案解析(总分:100.00,做题时间:90 分钟)一、第部分 选择题(总题数:10,分数:10.00)1.一个线程在它的一个完整的生命周期中通常经历的状态的种类有_(分数:1.00)A.1B.3C.5D.72.用 Runnable 实现线程时,必须实现的方法是_(分数:1.00)A.start( )B.init( )C.paint( )D.run( )3.可将语句块或方法设为同步使用的语句是_(分数:1.00)A.staticB.abstractC.finalD.synchronized4.Java 的 8 位字节数据流进行读写操作需要用到的类
2、分别是_(分数:1.00)A.FileInputStream 类和 FileOutputStream 类B.Input 类和 Output 类C.FileReader 类和 FileWriter 类D.Reader 类和 Writer 类5.构造方法 RandomAccessFile(File file,String mode)中的参数 mode 表示_(分数:1.00)A.读流的方法B.写流的方法C.读/写流的方法D.流的打开方式6.如果想获得一个 InetAddress 对象的主机域名,可调用方法_(分数:1.00)A.getName( )B.getHostName( )C.getAddr
3、ess( )D.getHostAddress( )7.构造方法 public URL(String s)中的参数 s 应表示为_(分数:1.00)A.一个网络协议B.一个文件C.包含网络协议、计算机域名的字符串D.操作系统名称8.用套接字方法建立两个程序的通信时,端口号应在的范围是_(分数:1.00)A.065535B.01023C.102465535D.655359.在编写访问数据库的 Java 程序过程中,下面哪个类是用来处理驱动程序的加载和建立新数据库连接的_(分数:1.00)A.Statement 类B.Connection 类C.ResultSet 类D.DriverManager
4、类10.JDBC 中执行一条 SQL 查询语句应调用方法_(分数:1.00)A.sendQuery( )B.sendSQL( )C.executeQuery( )D.executeSQL( )二、第部分 非选择题(总题数:10,分数:20.00)11.当就绪状态的线程被调度并获得处理器资源时,便进入 1 状态。 (分数:2.00)12.优先级高的线程可以在它的 run( )方法中调用 1 方法来使自己放弃处理器资源,休眠一段时间。 (分数:2.00)13.Java 中编程实现多线程应用有两种途径,一种是创建自己的线程子类,另一种是在用户自己的类中实现 1 接口。 (分数:2.00)14.若一个
5、线程使用的同步方法中用到某个变量,而此变量有时需其他线程修改后才能符合本线程的需要,那么可以在同步方法中使用 1 方法,使本线程等待。 (分数:2.00)15.如果用户的文件读取需求比较简单,那么用户可以使用 FileInputStream 类,该类是从 InputStream中派生出来的简单的 1 类。 (分数:2.00)16.在 Java 程序中可以通过继承 1 类来设置“打开文件”对话框的文件筛选条件,编写一个实现类,实现 accept(File f)与 getDescription( )两个方法。 (分数:2.00)17.Java 中当两个程序需要通信时,可以通过使用 1 类建立套接字
6、连接。 (分数:2.00)18.基于 1 的通信和 TCP 的通信不同,前者信息传递更快,但不提供可靠性保证,但需要较快速地传输信息时,就可以考虑前者协议。 (分数:2.00)19. 1 是 Java 数据库连接 API,它能完成三件事,即与一个数据库建立连接、向数据库发送 SQL 语句、处理数据库返回的结果。 (分数:2.00)20.Connection 类是 Java.sq1 包中用于处理与数据库连接的类。Connection 对象是用来表示 1 的对象,Java 程序对数据库的操作都在这种对象上进行。 (分数:2.00)三、简答题(总题数:6,分数:18.00)21.Java 中多线程是
7、如何调度的? (分数:3.00)_22.线程中的方法 wait( ),notify( )和 notifyAll( )的作用是什么? (分数:3.00)_23.创建一个 File 对象有哪几种构造方法? (分数:3.00)_24.java.io 包中封装的基本流类有哪几个? (分数:3.00)_25.如何用套接字建立两个程序间的通信? (分数:3.00)_26.Java 中采用什么方法与数据库交互? (分数:3.00)_四、程序填空题(总题数:5,分数:20.00)27.下面程序运行后,连续输出 20 个相同的单词,请完成程序。 public class C27 public static vo
8、id main(String args ) 1 t.start( ); class Hello implements Runnable int i=0; public void 2 while(i+20) System.out.print(i+“:Hello“); (分数:4.00)28.以下定义的类 shareDataManager 用于管理多个线程共享数据 data。一些线程要减少 data,另一些线程要增加 data。由于 data 不可以是负值,修改 data 的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法 modiData( )供修改 data 的线程调用,该方法在 dat
9、a 修改结束后,应通知其他等待进入这个方法的线程。 class ShareDataManager int data=0; 1void modiData(int delta) if(delta=0) data+=delta; else while(datadelta) tryystem. out. println(“发生等待!“); wait( ); catch(InterruptedException e) data-=delta; 2; ShareDataManager(int ititData)data=initData; (分数:4.00)29.一个文件复制应用程序,将某个文件的内容全部
10、复制到另一个文件。 public static void main(String args) File inputFile=new File(“text1.txt“); File outputFile=new File(“text2.txt“); int ch; try FileReader in=new FileReader(inputFile); FileWriter out=new FileWriter(outputFile); System.out.println(“开始文件复制“); while(ch=in. 1)!=-1) out. 2; in.close( ); out.clos
11、e( ); System.out.println(“结束文件复制“); catch(FileNotFoundException e1) System.out.println(“文件没有找到“+e1); catch(IOException e2) System. out. println(“File read Error:“+e2); (分数:4.00)30.C/S 模式中的 Client 端应用程序。这是一个客户端的 TCP 通信的简单实例,代码说明了客户端程序的编写方法。本题中,客户端程序向服务器主机的端口 8080 提出请求,连接建立后完成对服务器的读写。 public static vo
12、id main(String args ) String str=“; Socket socket; DataInputStream input=null;DataOutputStream output=null; try socket=new Socket(“localhost“,8080); input=new DataInputStream(socket. 1); output=new DataOutputStream(socket. 2); output.writeUTF(“good server!“); while(true) str=input.readUTF( ); if(str
13、=null) break; else System.out.println(str); socket.close( ); catch(IOException e)System.out.println(“can“t connect“); (分数:4.00)31.方法 connectDatabase( )根据给定的数据库 URL、用户名和密码连接数据库,如果连接成功,方法返回连接对象;连接不成功,则返回空。 public Connection connectDatabase(String url, String username, Stringpassword) Connection connec
14、tion=null; try Class. 1(/加载 ODBC 驱动程序 “com.microsoft.sqlserver.jdbc.SQLServerDriver“); catch(Exception e) e.printStackTrace( ); return null;/连接失败 try connection=DriverManager. 2 (url, usemame, password); catch(SQLException e) e.printStackTrace( ); return null;/连接不成功 return connection;/连接成功 (分数:4.00)
15、五、程序分析题(总题数:5,分数:20.00)32.阅读下列的程序,请写出该程序的功能。 public class helloThread implements Runnable public static void main(String args) helloThread hello=new helloThread( ); Thread tt=new Thread(hello); tt.start( ); public void run( ) for(;) try Thread. sleep(1000); catch(InterruptedException e) System.out.p
16、rintln(“hello!“); (分数:4.00)_33.阅读下列程序,请写出该程序的功能。 import java.io.*; public class FileTest public static void main(String args) try RandomAccessFile File=null; file=newRandomAccesFile(“FileTest.java“,“r“); long pointer=0; long fileLength=file length( ); while(pointerfile length( ); String s=file.readL
17、ine( ); System.out.println (s); pointer=file.getFilePointer( ); file.close( ); catch(FileNotFoundException e1) System.out.printl.n(“文件找不到!“+e1); catch(IOException e2) System.out.println(“文件读写错!“+e2); (分数:4.00)_34.阅读下列程,写出程序功能。 import java.applet. *; import java.awt. *; public class C34 extends Apple
18、t implements Runnable Thread myThread=null; public void start( ) setSize(300,200); if(myThread=null)myThread=new Thread(this); myThread.start( ); public void run( ) while (true) trymyThread.sleep(500); catch(InterruptedException e) repaint( ); public void paint(Graphics g) double i=Math.random( ); i
19、f(i0.33)g.setColor(Color.yellow); else if(i0.66)g.setColor(Color.red); else g.setColor(Color.blue); int x=(int)(100*i); g.fillOval(x,x,x,x); (分数:4.00)_35.写出以下程序的功能。 import java.io.*; public class TestFile public static void main(String args ) throws Exception BufferedReader br=new BufferedReader(new
20、 InputStreamReader(System.in); BufferedWriter bw=new BufferedWriter(new FileWriter(“input.txt“); String s; while (true) System.out.print(“请输入一个字符串: “); System.out.flush( ); s=br.readLine( ); if (s.length( )=0)break; bw.write(s); bw.newLine( ); bw.close( ); (分数:4.00)_36.阅读以下程序,写出以下程序的功能 。 Import .*;
21、Class InetDemo Public static void main(String args ) try InetAddress addr=InetAddress.getByName(““); String domainName=addr.getHostName( ); String IPName=addr.getHostAddress( ); System.out.println(domainName); System.out.println(IPName); catch(UnknownHostException e) e.printStackTrace( ); (分数:4.00)_
22、六、程序设计题(总题数:2,分数:12.00)37.给定网址 http: /,要求用代码示意由给定网址读取网页内容的过程。 (分数:6.00)_38.设计一个应用程序,求整数文件 text1.txt 中各行整数的和,并把和存入到另一个文件 text2.txt 中。设整数文件中全是整数,整数序列被分成行,各行整数个数不等且用逗号分隔。要求程序将文件中各行整数的和输出在 text2.txt 中。 (分数:6.00)_Java 语言程序设计(一)自考题模拟 13 答案解析(总分:100.00,做题时间:90 分钟)一、第部分 选择题(总题数:10,分数:10.00)1.一个线程在它的一个完整的生命周
23、期中通常经历的状态的种类有_(分数:1.00)A.1B.3C.5 D.7解析:考点 线程生命周期 解析 线程生命周期共有 5 个状态:新建状态、就绪状态、运行状态、阻塞状态和死亡状态。2.用 Runnable 实现线程时,必须实现的方法是_(分数:1.00)A.start( )B.init( )C.paint( )D.run( ) 解析:考点 Runnable 接口 解析 Runnable 接口中只有 run 方法需要实现。3.可将语句块或方法设为同步使用的语句是_(分数:1.00)A.staticB.abstractC.finalD.synchronized 解析:考点 线程同步 解析 sy
24、nchroruzed 可将语句块或方法设为同步。4.Java 的 8 位字节数据流进行读写操作需要用到的类分别是_(分数:1.00)A.FileInputStream 类和 FileOutputStream 类 B.Input 类和 Output 类C.FileReader 类和 FileWriter 类D.Reader 类和 Writer 类解析:考点 字节数据读写类 解析 Java 的 8 位字节数据流的读写需要用到的类分别是 FileInputStream 类和 FileOutputStream 类,它们分别是 Input-Stream 和 OutputStream 类的子类;16 位
25、Unicode 字符数据流的读写操作需要用到的类分别是 FileReader 和 FileWriter 类,它们分别是 Reader 和 Writer 类的子类。5.构造方法 RandomAccessFile(File file,String mode)中的参数 mode 表示_(分数:1.00)A.读流的方法B.写流的方法C.读/写流的方法D.流的打开方式 解析:考点 RandomAccessFile 类 解析 RandomAccessFile 文件随机访问类,其中参数 mode 取值“r”(只读)或“rw”(可读写)定义了流的打开方式。6.如果想获得一个 InetAddress 对象的主机
26、域名,可调用方法_(分数:1.00)A.getName( )B.getHostName( ) C.getAddress( )D.getHostAddress( )解析:考点 Java 网络编程基础InetAddress 类 解析 InetAddress 类的对象用于存储 IP 地址和域名,其提供的 getHostName( )方法用于获取InetAddress 对象的主机域名。7.构造方法 public URL(String s)中的参数 s 应表示为_(分数:1.00)A.一个网络协议B.一个文件C.包含网络协议、计算机域名的字符串 D.操作系统名称解析:考点 Java 网络编程基础URL
27、类 解析 URL 类构造方法中的参数 s 代表网络中的一个资源,该资源包含网络协议和计算机域名的字符串。8.用套接字方法建立两个程序的通信时,端口号应在的范围是_(分数:1.00)A.065535B.01023C.102465535 D.65535解析:考点 客户机/服务器模式套接字 解析 端口号和 IP 地址的组合称为网络套接字。规定:端口号 01023 供系统专用。端口号102465535 供应用程序使用。9.在编写访问数据库的 Java 程序过程中,下面哪个类是用来处理驱动程序的加载和建立新数据库连接的_(分数:1.00)A.Statement 类B.Connection 类C.Resu
28、ltSet 类D.DriverManager 类 解析:考点 Java 数据库编程基础DriverManager 类 解析 DriverManager 类用来处理驱动程序的加载,并调用 getConnection( )静态方法建立新数据库连接。10.JDBC 中执行一条 SQL 查询语句应调用方法_(分数:1.00)A.sendQuery( )B.sendSQL( )C.executeQuery( ) D.executeSQL( )解析:考点 Java 数据库编程基础数据库查询 解析 利用 Statement 对象的 executeQuer( )方法执行 SQL 查询语句进行查询,返回一个结果
29、集。二、第部分 非选择题(总题数:10,分数:20.00)11.当就绪状态的线程被调度并获得处理器资源时,便进入 1 状态。 (分数:2.00)解析:运行 考点 线程生命周期 解析 运行状态时某个就绪状态的线程获得 CPU 资源,开始运行。12.优先级高的线程可以在它的 run( )方法中调用 1 方法来使自己放弃处理器资源,休眠一段时间。 (分数:2.00)解析:sleep( ) 考点 线程调度 解析 Thread 类中 sleep( )方法可以让当前线程休眠一定时间,在这段时间中,其他线程就有机会被执行。13.Java 中编程实现多线程应用有两种途径,一种是创建自己的线程子类,另一种是在用
30、户自己的类中实现 1 接口。 (分数:2.00)解析:Runnable 考点 线程创建 解析 Java 程序实现多线程应用有两种途径:一是继承 Thread 类声明 Thread 子类,用 Thread 子类创建线程对象;二是在类中实现 Runnable 接口,在类中提供 Runnable 接口的 run( )方法。14.若一个线程使用的同步方法中用到某个变量,而此变量有时需其他线程修改后才能符合本线程的需要,那么可以在同步方法中使用 1 方法,使本线程等待。 (分数:2.00)解析:wait( ) 考点 线程同步 解析 在临界段中使用 wait( )方法,使执行该方法的线程等待,并允许其他线
31、程使用这个临界段。15.如果用户的文件读取需求比较简单,那么用户可以使用 FileInputStream 类,该类是从 InputStream中派生出来的简单的 1 类。 (分数:2.00)解析:输入 考点 输入/输出流 解析 InputStream 是输入流;OutputStream 是输出流。16.在 Java 程序中可以通过继承 1 类来设置“打开文件”对话框的文件筛选条件,编写一个实现类,实现 accept(File f)与 getDescription( )两个方法。 (分数:2.00)解析:FileFilter 考点 文件对话框 解析 在“打开文件”对话框中,通过 FileFilt
32、er 类可以设置筛选条件,该类预设了两个方法,分别是accept(File f)和 getDescription( )。17.Java 中当两个程序需要通信时,可以通过使用 1 类建立套接字连接。 (分数:2.00)解析:socket 考点 Java 网络编程套接字 解析 利用 socket 的构造方法,可以在客户端建立到服务器的套接字连接:Socket(String host,int port) host 是服务器的 IP 地址,port 是端口号。18.基于 1 的通信和 TCP 的通信不同,前者信息传递更快,但不提供可靠性保证,但需要较快速地传输信息时,就可以考虑前者协议。 (分数:2.
33、00)解析:UDP 考点 客户机/服务器模式socket 通信 解析 c/s 双方通信有流式 socket,即 TCP,和数据报式 UDP 两种。TCP 的特点是可以保证传输的正确性、可靠性。UDP 无需建立连接和拆除连接,速度快,但无可靠保证。19. 1 是 Java 数据库连接 API,它能完成三件事,即与一个数据库建立连接、向数据库发送 SQL 语句、处理数据库返回的结果。 (分数:2.00)解析:JDBC 考点 Java 程序与数据库连接 解析 用纯 Java 的 JDBC 驱动程序实现与数据库连接的过程:与一个数据库建立连接、向数据库发送SQL 语句、处理数据库返回的结果。20.Co
34、nnection 类是 Java.sq1 包中用于处理与数据库连接的类。Connection 对象是用来表示 1 的对象,Java 程序对数据库的操作都在这种对象上进行。 (分数:2.00)解析:数据库连接 考点 Java 数据库连接Connection 的作用 解析 Connection 类是 Java.sq1 包中用于处理与特定数据库连接的类。Connection 对象用于表示数据库连接的对象。三、简答题(总题数:6,分数:18.00)21.Java 中多线程是如何调度的? (分数:3.00)_正确答案:()解析:线程调度器负责线程的排队和处理器在线程间的分配;线程在优先级基础上依据“先到
35、先服务”的原则,即相同优先级的线程按启动的先后顺序执行,高优先级线程先于低优先级线程运行。22.线程中的方法 wait( ),notify( )和 notifyAll( )的作用是什么? (分数:3.00)_正确答案:()解析:(1)当一个线程使用的同步方法中用到某个变量,而此变量又需要其他线程修改后才能符合本线程的需要时,则可以在同步方法中调用 wait( )方法,使本线程等待,并允许其他线程调用这个同步方法。 (2)其他线程在使用这个同步方法时不需要等待,当它使用完这个同步方法时,用 notifyAll( )通知所有由于使用这个同步方法而处于等待的线程结束,再次使用这个同步方法。 (3)如
36、果使第一个处于等待的线程结束等待,则调用方法 notify( )。23.创建一个 File 对象有哪几种构造方法? (分数:3.00)_正确答案:()解析:(1)包含路径名的字符串; (2)含有路径名的字符串和包含文件名的字符串; (3)一个代表路径的文件和一个含有文件名的字符串。24.java.io 包中封装的基本流类有哪几个? (分数:3.00)_正确答案:()解析:共有四个,包括:基于 Unicode 字符的输入流 Reader、输出流 Writer,基于二进制字节的输入流InputStream、输出流 OutputStream。25.如何用套接字建立两个程序间的通信? (分数:3.00
37、)_正确答案:()解析:(1)用 Socket 类建立客户到服务器的套接字的对象:Socket(String host,int port); (2)用 ServerSocket 建立接受客户套接字的服务器套接字对象:ServerSocket(int port)客户端与服务器端的端口号相同; (3)客户端服务器对象调用方法 accept( )接受客户的套接字。 创建客户端套接字对象、服务器端套接字对象和调用方法 accept( )时都可能产生 IOException,所以需对异常进行处理。26.Java 中采用什么方法与数据库交互? (分数:3.00)_正确答案:()解析:可以采用两种方法: (
38、1)编写一个驱动程序接受 JDBC 调用,执行 SQL 对数据库的调用; (2)使用已存在的 ODBC 驱动程序,用 JDBC-ODBC 桥将 JDBC 与 ODBC 连接起来。四、程序填空题(总题数:5,分数:20.00)27.下面程序运行后,连续输出 20 个相同的单词,请完成程序。 public class C27 public static void main(String args ) 1 t.start( ); class Hello implements Runnable int i=0; public void 2 while(i+20) System.out.print(i+
39、“:Hello“); (分数:4.00)解析:Thread t=new Thread(new Hello( ) mn( ) 考点 线程创建 解析 此题是通过实现 Runnable 接口的方式实现多线程。实现了 Runnable 接口的类需要重写 Runnable中的 run( )方法。然后创建实现类的对象,调用 start( )方法开始线程的执行。28.以下定义的类 shareDataManager 用于管理多个线程共享数据 data。一些线程要减少 data,另一些线程要增加 data。由于 data 不可以是负值,修改 data 的方法对这些线程来说不仅要互斥,还要同步。类提供一个方法 m
40、odiData( )供修改 data 的线程调用,该方法在 data 修改结束后,应通知其他等待进入这个方法的线程。 class ShareDataManager int data=0; 1void modiData(int delta) if(delta=0) data+=delta; else while(datadelta) tryystem. out. println(“发生等待!“); wait( ); catch(InterruptedException e) data-=delta; 2; ShareDataManager(int ititData)data=initData;
41、(分数:4.00)解析:synchronized notify( ) 考点 线程同步与互斥 解析 data 是共享数据,通过 modiData 对它进行修改需要进行互斥操作,添加 synchroIuzed 关键字,将该方法添加共享代码锁,控制某一个时刻只允许一个增加或者减少 data 的线程进行工作。一个线程执行完通过 notif( )方法唤醒另一个线程进行操作,就能保证得到正确的结果。29.一个文件复制应用程序,将某个文件的内容全部复制到另一个文件。 public static void main(String args) File inputFile=new File(“text1.txt
42、“); File outputFile=new File(“text2.txt“); int ch; try FileReader in=new FileReader(inputFile); FileWriter out=new FileWriter(outputFile); System.out.println(“开始文件复制“); while(ch=in. 1)!=-1) out. 2; in.close( ); out.close( ); System.out.println(“结束文件复制“); catch(FileNotFoundException e1) System.out.println(“文件没有找到“+e1); catch(IOException e2) System. out. println(“File read Error:“+e2); (分数:4.00)解析:read( ) write(ch) 考点 输入/输出流 解析 read( ):从输入流读取下一个字符,返回一个整数,如果读前已处