1、 Java 高级程序设计第二学期 期末复习题一、 判断题1. java.io.Seriablizable 是对象可以序列化接口。 ()2. java.awt 包是 Java 语言用来构建图形用户界面(GUI)的类库。 ()3. 容器 java.awt.Container 是 Component 的子类,一个容器可以容纳多个构件,并使他们成为一个整体。 ()4. Java 中所有的类都是通过直接或间接地继承 java.lang.Object 类得到的。 ()5. Java 的图形用户界面的最基本的组成部分就是构件(Component) 。 ()6. 在 Swing 中用重量级的构件替代了 AWT
2、 中的轻量级的构件。 (X)7. 与 AWT 构件不同,Swing 构件不能直接添加到顶层容器中,它必须添加到一个与 Swing 顶层容器相关联的内容面板( contentPane)上。 ()8. 类 Panel 默认的布局管理器是 GridLayout。 (X)9. 每个 Java 小应用程序必须定义为 Jframe 类的子类。 ()10. 使用 UDP 通信时,用 DatagramPacket 类把要发送的信息打包。 ()11AWT 组件称为重型组件 ()12.Swing 组件称为轻型组件()13.容器类不是 GUI 组件(X)14.使用 add 方法可以在框架的内容窗格中添加组件()15
3、.FlowLayout 是最简单的布局管理器()16.布局管理器 GridLayout 不是以网格(矩阵)的形式排列组件(X )17.布局管理器的属性不可以动态的改变(X)18.每一时刻,一个容器只能有一个布局管理器()19.要创建一个用户界面,需要创建一个框架或 applet 来存放用户界面组件()20.Component 类是所有用户界面的父类()21. JFrame 实例可以添加到容器中。( F )22. JCheckBox 继承了 AbstractButton 类的所有属性。( T )23. JTextArea 可以让用户输入多行文字。( T )24. JSlider 与 JScrol
4、lbor 类似,但是 JSlider 具有更多的属性和更多是显示形式。( T )25.JTextField 类继承了 JTextComponent 类,而 JTextComponent 类继承JComponent 类。( T )26. 从应用程序创建一个子窗口,不用先创建 JFrame 的一个子类。( F )27. 在一个文本域中按下回车键就触发了 ActionEvent 事件。( T )28. Java 使用事件委托处理模型来处理事件,源对象和监听对象可以是同一个对象。( T )29. JDBC 是指 Java 程序与数据库连接的一种机制。 ( T )30.可以给一个面板添加框架。(F )3
5、1. File 类提供实现文件读写的操作方法。 (T)32. java.io.Reader 时一个读取字符的类。 (T)33.垂直文本位置指定文本相对于图标的垂直位置。 (T)34.不可以同时设置按钮上的文本和图标。(F)35.标签是显示一小段文字、一幅图片或者二者皆有的区域。 (T)36.组合框是包含项目的一个列表,用户可以从中进行选则。(T)37. 用 read()方法读取文件内容时,返回 -1 表示文件结束。 (F)38. PrintWriter 类和 PrintStream 类可以以文本方式输入基本类型数据值、字符串和对象。 (F)39. 代表优先级的常数值越大优先级越低 (F)40.
6、 线程一旦被创建,则自动运行 (F ) 二、单选题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()“); p
7、ublic static void main(String args) Thread t=new Thread(new X(); t.start(); A、第一行会产生编译错误 B、第六行会产生编译错误 C、第六行会产生运行错误 D、程序会运行和启动 3、下列选项中,用于定义接口的关键字是( )A、importB、implementsC、interfaceD、protected4定义类头时能使用的修饰符是( )。A) private B) static C) abstract D) protected5、下面哪个方法不可以在任何时候被任何线程调用?( )A、wait()B、sleep()C、y
8、ield()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 在程序读入字符文件
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 中用于创建文件对象的类是( )
10、AFile B. Object C. Thread D. Frame13. 从键盘上输入一个字符串创建文件对象,若要判断该文件对象为目录文件或数据文件,可使用下列哪个方法?( )AgetPath() B. getName() C.isFile() D. isAbsolute()14. 下列哪个类不对直接创建对象?( )AInputStream B. FileInputStream C. BufferedInputStream D. DataInputStream15. 从键盘上输入多个字符时,为了避免回车换行符的影响,需要使用下列哪个流方法?( )Awrite() B. flush() C.
11、close() D. skip()16. 以对象为单位把某个对象写入文件,则需要使用什么方法? ( )A. writeInt() B writeObject() C. write() D.writUTF()17. 下列哪个类的方法能够直接把简单数据类型写入文件?( )AOutputStream B. BufferedWriter C. ObjectOutputStream. D.FileWriter18. 若一个类对象能被整体写入文件,则定义该类时必须实现下列哪个接口?( )A.Runnable B. ActionListener C. WindowsAdapter D. Serializab
12、le19. 下列哪种类型的数据能以对象的形式写入文件?( )AString B. Frame C. Dialog D. Button20. File 类的方法中,用于列举某目录下的子目录及文件的方法是( )Along length() B. long lastModified() C. String list() D. String getName()21. 能够以字符串为单位写入文件数据的流类是( )A. FileOutputStream B. FileWriter C. BufferedWriter C. OutputStream22. 能够向文件输入逻辑型数据的类是:( )A. File
13、OutputStream B. OutputStream C. FileWriter D.DataOutputStream23. 在线程同步中, 为了唤醒另一个等待的线程,使用下列方法( )A. sleep() B. wait() C notify() D. join()24. 为了得到当前正在运行的线程,可使用下列哪个方法?( )AgetName() B. Thread.CurrentThread(). B. sleep() D. run()25. 以下( )不属于线程的状态。A就绪状态 B。运行状态 C。挂起状态 D。独占状态26当线程被创建后,其所处的状态是( )A阻塞状态 B。运行状态
14、 C、就绪状态 D、新建状态27 当线程调用 start()后,其所处状态为( )A阻塞状态 B。运行状态 C、就绪状态 D、新建状态28 Thread.sleep()方法调用后,当等待时间未到,该线程所处状态为( )A阻塞状态 B。运行状态 C、就绪状态 D、新建状态29新生状态的线程其可能直接进入的状态是( )A阻塞状态 B、运行状态 C、新建状态 D、结束状态30Thread.sleep ()方法调用后,当等待时间已到,该线程所处状态为( )A阻塞状态 B。运行状态 C、就绪状态 D、新建状态31当线程因异常而退出 run()后,其所处状态为( )A阻塞状态 B。运行状态 C、就绪状态
15、D、结束状态32wait()方法首先是哪个类的方法?( )A. Object B. Thread. C. Runnable D. File33. 如果我们想实现“先把要写入文件的数据先缓存到内存中,再把缓存中的数据写入文件中”的功能时,则需要使用下列哪个类?( )A. FileReader B. OutputStream C. FilterOutputStream D. DataOutputStream34. 用 read()方法读取文件内容时,判断文件结束的标记为( )A. 0 B. 1 C -1 D. 无标记35 以下哪个方法只对使用了缓冲的流类起作用?( )A. read() B. wr
16、ite() C skip() D. flush()36. Java 提供的类 InetAddress 来进行有关 Internet 地址的操作.( )A. Socket B.ServerSocket C. DatagramSocket D InetAddress37. InetAddress 类中哪个方法可实现正向名称解析?( )A. isReachable() B. getHostAddress() C. getHosstName() D.getByName()38. 为了获取远程主机的文件内容,当创建 URL 对象后,需要使用哪个方法获取信息( )A.getPort() B.getHost
17、 C.openStream() D.openConnection()39. java 程序中,使用 TCP 套接字编写服务端程序的套接字类是( )A. Socket B. ServerSocket C. DatagramSocket D.DatagramPacket40. ServerSocket 的监听方法 accept()的返回值类型是( )A. void B. Object C. Socket D. DatagramSocket41. ServerSocket 的 getInetAddress()的返回值类型是( )A. Socket B ServerSocket D.InetAddre
18、ss D,.URL42. 当使用客户端套接字 Socket 创建对象时,需要指定( )A服务器主机名称和端口 B、服务器端口和文件 C、服务器名称和文件D服务器地址和文件43使用流式套接字编程时,为了向对方发送数据,则需要使用哪个方法( )AgetInetAddress() B. getLocalPort() C.getOutputStream() D.getInputStream()44. 使用 UDP 套接字通信时,常用哪个类把要发送的信息打包? ( )A. String B. DatagramSocket C. MulticastSocket D.DatagramPacket45. 使用
19、 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.
20、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(“”,
21、”,”).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.e
22、xecuteSelect()51Swing 与 AWT 的区别不包括( )A.Swing 是由纯 Java 实现的轻量级构件 B.Swing 没有本地代码 C.Swing 不依赖操作系统的支持 D.Swing 支持图形用户界面52. JAVA 中提供了多种布局对象类。其中使用卡片式布局的是( )A.FlowLayout B.BoederLayout C.BoxLayout D.CardLayout53.每个使用 Swing 组件的程序必须至少有一个( )A. 按钮 B. 顶层容器 C. 标签 D. 菜单54.下列哪个选项是创建一个标识有“关闭“ 按钮的语句?( )A.JTextField b
23、= new JtextField(“关闭“);B.JTextArea b = new JTextArea(“关闭“); C.JButton b = new Jbutton(“关闭“);D.JCheckbox b = new Jcheckbox(“关闭“);55.鼠标事件的监听器接口 MouseListener 能实现的事件不包括( )A.按下 B.释放C.点击 D.拖动56.在 Java 中,而无需在程序中用 import 导入的包是( )Ajava.applet Bjava.awtCjava.util Djava.lang57.类 Panel 默认的布局管理器是( ) AGridLayout
24、 BBorderLayout CFlowLayout DCardLayout58.容器 Frame 缺省使用的布局编辑策略是( ) 。AFlowLayout BBorderLayout CGridLayout DCardLayout59容器类 java.awt.container 的父类是( ) 。Ajava.awt.Window Bjava.awt.ComponentCjava.awt.Frame Djava.awt.Panel60编写 Java 图形界面程序时,若需要对发生的事件做出响应和处理,一般需要在程序的开头写上( )语句。Aimport java.awt.* ; Bimport j
25、ava.applet.* ;Cimport java.io.* ; Dimport java.awt.event.* ;三、填空题1Stdout System.out 作为 PrintStream 的实例,来实现 stdout,它代表的是 屏幕 2Stdin System.in 作为 InputStream 类的一个实例来实现 stdin,它代表的是键盘,你可以使用其中两个成员函数, read()让你从输入中读一个字节 ,skip(long n)让你在输入中跳过 n 个字节。3 Java 中的 IO 流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以
26、一共四个):InputStream,OutputStream,Reader,Writer。它们通过重载 read()和 write()方法定义了 6 个读写操作方法。4 File 类不是一個標準的 I/O 类,在 java.io 类库中它是唯一的 non-stream 類別,既不能讀取文件內容,也不能修改文件內容,主要作用是收集檔案(或目錄)的相關信息,例如:建立文件对象、修改文件名、设置文件属性、测试文件属性5目录是一个包含其他文件和路径列表的 File 类。当你创建一个 File 对象且它是目录时,isDirectory( ) 方法返回 ture。这种情况下,可以调用该对象的 String
27、 list( )方法来提取该目录内部其他文件和目录的列表6. 所有的输出过滤流都是抽象类_ _的子类。(FilterOutputStream)7、字符输入流 BufferedReader 使用了_ _技术。(PrintStream)8、 InputStreamReader 负责将 InputStream 转化成 Reader,而OutputStreamWriter 则将 OutputStream 转化成 Writer。实际上是通过 byte和String 来关联。9、设 a.txt 为当前目录下的一个文本文件,则以字符方式向该文件写数据时,需要建立的输出流通道为:new FileWriter(
28、“a.txt”);10. 随机访问文件类是 RandomAccessFile,它实现了与 DataInputStream, DataOutputStream 类同样实现的接口 DataInput, DataOutput.。11实现多线程的两种方式是:1、继承 Thread 类;2、实现 Runnable 接口。12、取得当前线程的语句是: Thread.currentThread();13主线程的名称是 main, 默认创建的第一个子线程的名称是 thread-014. 可以调用 Thread 类的方法 getPriority() 和 setPriority()来存取线程的优先级,线程的优先级
29、界于 1(MIN_PRIORITY)和 10(MAX_PRIORITY)之间,缺省是5(NORM_PRIORITY) 。15.(1) 当多个线程同时运行时,会产生数据错误及其它冲突问题。Java 语言提供了线程同步控制机制,一是 锁定共享资源,使得在任何时刻只有一个线程能够访问共享资源,以保持共享资源的完整和一致,二是让互相通信的线程 运行,以保证通信的正确性。(2)线程之间的通信有两种方法:一是把共享变量和方法封闭在一个类中,二是利用系统方法 和 控制线程通信. 实现对共享资源互拆访问的方法是在方法声明中加入synchronized 关键字来声明一个访问共享资源的方法,或者通过 synchr
30、onized 关键字来声明 synchronized 块。16、 守护线程一般被用于在后台为其它线程提供服务。调用方法 isDaemon() 来判断一个线程是否是守护线程,也可以调用方法 setDaemon()将一个线程设为守护线程。17、InetAddress 是用于封装 IP 地址和 DNS 的一个类。18、TCP/IP 套接字是最可靠的双向流协议。等待客户端的服务器使用 ServerSocket 类,而要连接到服务器的客户端则使用 Socket 类。19、 包中提供了一个类 MulticastSocket,允许数据报以广播方式发送到该端口的所有客户。20. 在 TCP/IP 协议的传输层
31、除了 TCP 协议之外还有一个 UDP 协议。几个标准的应用层协议 HTTP,FTP,SMTP使用的都是 TCP 协议。 UDP 协议主要用于需要很强的实时交互性的场合,如网络游戏,视频会议等21、当我们得到一个 URL 对象后,就可以通过它读取指定的 WWW 资源。这时我们将使用URL 的方法 openStream(),其定义为:InputStream openStream();22、URL 的构造方法都声明抛弃非运行时异常 MalformedURLException ,因此生成 URL对象时,我们必须要对这一例外进行处理,通常是用 try-catch 语句进行捕获。23、一个 Statem
32、ent 对象,可以执行多个 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
33、.start(); public void run() for(;) try Thread.sleep(1000) ; catch( InterruptedException e) System.put.println(“Hello“); 26、下列程序的功能是把整型数组 myArray 中的各元素存入文件 ints.dat 中,请将程序补充完整。Import java.io.*;Public class WriteFilePublic static void main (String A)_int_ myArray=10,20,30,40;TryFileOutputStream f=new
34、FileOutputStream(“ints.dat”);DataOutputStream_Dos_=new DataOutputStream(f);For(int i=0;i=100)y=50;_ b1.setLocation(x,y)_;public void keyTyped(KeyEvent e)public void keyReleased(KeyEvent e)public static void main (String args)Yidong a = new Yidong ();_ a.setVisible(true) _;28、下面的程序段完成服务器在端口 4331 监听客户
35、端的连接,如果有连接,则在服务端显示客户端的 IP 地址, 请将程序补充完整。public class Server public static void main(String args)ServerSocket server=null;Server_thread thread;Socket you=null;while(true) try server=new ServerSocket(_4331_); catch(IOException e1) try System.out.println(“ 等待客户呼叫“);you=_server.accept();_System.out.print
36、ln(“客户的地址:“ + _you.getInetAddress_); catch (IOException e) 四、编程题1、利用文件输入输出流编写一个实现文件拷贝的程序,源文件名和目标文件名通过命令行参数传入。答: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);FileOutputSt
37、ream 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();
38、2、编写程序实现窗口,包含一个标签、一个文本框和一个按钮,当用户单击按钮时,程序把文本框中的内容复制到标签中。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class MyFrame extends JFrame implements ActionListenerJLabel lbl;JTextField txt;JButton btn; public MyFrame()Container c=getContentPane();/设置窗体的布局为 FlowLayoutsetLayout(new Flo
39、wLayout();lbl = new JLabel(“初始信息 “);txt = new JTextField(30);btn = new JButton(“确定“); c.add(lbl);c.add(txt);c.add(btn);btn.addActionListener(this); setVisible(true); public void actionPerformed(ActionEvent e)lbl.setText(txt.getText(); public static void main(String args)new MyFrame(); 3编写一个程序,从键盘输入一
40、串字符,从屏幕输出并将其存入 a.txt 文件中。3答: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(IOException e)System.out.println(e.to
41、String();System.out.println(“输出至文件完毕!“);4、下列程序向屏幕输出文本文件内容:请完成所缺少的代码import java.io.*;class readtxtpublic static void main(String args) tryFileReader f1 = new FileReader(“u.txt“);BufferedReader bf1 =new BufferedReader(f1); String line;line = bf1.readLine(); while(line!=null) /判断所读的一行内容是否为空;System.out.
42、println(line);line = bf1.readLine(); /继续读入下一行bf1.close(); /关闭文件的输入流;catch(IOException e) e.printStackTrace(); 5、设服务器端程序监听端口为 8629, 当收到客户端信息后,首先判断是否是“BYE” ,若是,则立即向对方发送“BYE” ,然后关闭监听,结束程序。若不是,则在屏幕上输出收到的信息,并由键盘上输入发送到对方的应答信息。请编写程序完成此功能。mport .*;import java.io.*;class Serverpublic Server() try ServerSocke
43、t ss = new ServerSocket(8629); System.out.println(“服务器端已运行,等待客户端连接: “); Socket socket = ss.accept(); /接收客户端的连接请求;BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream();PrintWriter out = new PrintWriter(socket.getOutputStream(),true);BufferedReader br = new BufferedReade
44、r(new InputStreamReader(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(“请输入回答:“ );line=br.readLine(); /从键盘上输入信息;out.
45、println(line); /向对方发送信息 catch (IOException e) public static void main(String args) throws Exceptionnew Server();6、TCP 客户端需要向服务器端 8629 发出连接请求,与服务器进行信息交流,当收到服务器发来的是“BYE”时,立即向对方发送“BYE” ,然后关闭连接,否则,继续向服务器发送信息。import java.io.*;import .*;class Client2public Client2() tryString s;Socket socket = new Socket(
46、“服务器地址“, 8629); 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(“请向服务器输出一条字符串:“);s=line.read
47、Line();out.println(s); /向服务器发出信息;s=in.readLine().trim(); /收到服务器发来的信息;System.out.println(“服务器返回的信息是:“);System.out.println(s); if(s.equals(“BYE“) out.println(“BYE“);line.close();out.close();in.close();socket.close(); break; catch (IOException e) public static void main(String args) new Client2();7、设 access 数据库中有 student 表,表中存放学生学号,姓名两个字段,请编写程序输出表中所有记录信息。 (假定已经配置好数据源为:mydb11)import java.sql.*;class accesspublic static void main(String args)Connection con;Statement sql; /声明 Statement 对象ResultSet rs;tryClass.forName(“sun.jdbc.odbc.JdbcOd