第8章 输入流与输出流
一、选择题
1.下列数据流中,属于输入流的一项是( B )。
A.从内存流向硬盘的数据流 B.从键盘流向内存的数据流 C.从键盘流向显示器的数据流 D.从网络流向显示器的数据流
【解析】输入流是指从外围设备流向主机(包括CPU和内存)的数据流。
4.下列程序从标准输入设备读入一个字符,然后再输出到显示器,选择正确的一项填入―//x‖处,完成要求的功能( B )。
import java.io.*; public class X8_1_4 { public static void main(String[] args) { char ch; try{ //x System.out.println(ch); } catch(IOException e){ e.printStackTrace(); } } }
A.ch = System.in.read(); B.ch = (char)System.in.read();
C.ch = (char)System.in.readln(); D.ch = (int)System.in.read(); 【解析】System.in.read()方法返回的是字符对应的Unicode码,即返回的类型是int型,而ch是char类型,因此必须把方法的返回值强制转换为char类型才能把它赋值给ch变量。另外,System.in对象中没有readln()方法。
6.下列流中哪一个使用了缓冲区技术( A )?
A.BufferedOutputStream B.FileInputStream
C.DataOutputStream D.FileReader
【解析】只有BufferedOutputStream使用了缓冲区技术。 7.能读入字节数据进行Java基本数据类型判断过虑的类是( C )。
A.BufferedInputStream B.FileInputStream C.DataInputStream D.FileReader
2.Java语言提供处理不同类型流的类所在的包是( D )。
A.java.sql B.java.util C.java.net D.java.io 【解析】java.io 包是Java语言提供处理不同类型流的类所在的包。
3.不属于java.io包中的接口的是( C )。
A.DataInput B.DataOutput C.DataInputStream D.ObjectInput
【解析】DataInputStream是java.io包中的一个类,其他三个则是java.io包中的接口。
5.下列程序实现了在当前包dir815下新建一个目录subDir815,选择正确的一项填入程序的横线处,使程序符合要求( D )。
package dir815; import java.io.*;
public class X8_1_5 { public static void main(String[] args){ char ch; try{ File path = ; if(path.mkdir()) System.out.println(\ } catch(Exception e){ e.printStackTrace(); } } }
A.new File(\ B.new
File(\
C.new File(\ D.new File(\
【解析】在程序中,目录之间的连接符是“\\\\”或“/”,因此首先排除B和C;而默认情况下,创建相对目录是在当前目录下进行,而dir815也在当前目录下,因此要在dir815下创建新的目录,就必须使用D的形式。
8.使用哪一个类可以实现在文件的任一个位置读写一个记录( B )?
A.BufferedInputStream B.RandomAccessFile
C.FileWriter D.FileReader
【解析】只有RandomAccessFile才能实现在文件的任一个位置读写一个记录。
11
9.在通常情况下,下列哪个类的对象可以作为BufferedReader类构造方法的参数( C )?
A.PrintStream B.FileInputStream C.InputStreamReader D.FileReader
【解析】InputStreamReader类的对象可以作为BufferedReader类构造方法的参数。 10.若文件是RandomAccessFile的实例f,并且其基本文件
长度大于0,则下面的语句实现的功能是( B )。
f.seek(f.length()-1);
A.将文件指针指向文件的第一个字符后面 B.将文件指针指向文件的最后一个字符前面 C.将文件指针指向文件的最后一个字符后面 D.会导致seek()方法抛出一个IOException异常
【解析】通过调用f对象的length()方法,可以将文件指针指向文件的末尾,因此f.length()-1即指向文件的最后一个字符前面。
11.下列关于流类和File类的说法中错误的一项是( B )。
A.File类可以重命名文件 B.File类可以修改文件内容 C.流类可以修改文件内容 D.流类不可以新建目录 【解析】只有流类可以修改文件内容,而File类则不能。 三、判断题
12.若要删除一个文件,应该使用下列哪个类的实例( B )?
A.RandomAccessFile B.File C.FileOutputStream D.FileReader
【解析】要删除文件以及查看文件属性等,应使用File类对象来实现。
13.下列哪一个是Java系统的标准输入流对象( )?
A.System.out B.System.in C.System.exit D.System.err
【解析】System.in是Java系统的标准输入流对象,而System.out和System.err则是Java系统的标准输出流和标准错误对象,System.exit则是System类的退出方法。
14.Java系统标准输出对象System.out使用的输出流是( A )。
A.PrintStream B.PrintWriter
C.DataOutputStream D.FileReader
【解析】System.out属性是PrintStream类型的对象。
1.文件缓冲流的作用是提高文件的读/写效率。( √ ) 2.通过File类可对文件属性进行修改。( √ ) 3.IOException必须被捕获或抛出。( √ )
4.Java系统的标准输入对象是System.in,标准输出对象有两个,分别是标准输出System.out和标准错误输出System.err。( √ )
5.对象串行化机制是指将程序中对象的状态转化为一个字节流,存储在文件中。( √ ) 6.Serializable接口是个空接口,它只是一个表示对象可以串行化的特殊标记。( √ )
12
第9章 Java多线程机制
一、选择题
1.下列说法中,正确的一项是( A )。
A.单处理机的计算机上,2个线程实际上不能并发执行 B.单处理机的计算机上,2个线程实际上能够并发执行 C.一个线程可以包含多个进程 D.一个进程只能包含一个线程 【解析】单处理机的计算机上通过一个极短的固定时间段或者在线程等待时,切换到另一个线程,这种调度过程时间极短,看上去像是并发执行。
2.下列说法中,错误的一项是( A )。 A.线程就是程序 B.线程是一个程序的单个执行流 C.多线程是指一个程序的多个执行流 D.多线程用于实现并发 【解析】线程是一个程序的单个执行流,而不是程序本身。而多线程作为实现并发的一个重要手段,是一个程序的多个执行流。 3.下列关于Thread类的线程控制方法的说法中错误的一项是( C )。
A.线程可以通过调用sleep()方法使比当前线程优先级低的线程运行
B.线程可以通过调用yield()方法使和当前线程优先级一样的线程运行
C.线程的sleep()方法调用结束后,该线程进入运行状态 D.若没有相同优先级的线程处于可运行状态,线程调用yield()方法时,当前线程将继续执行
【解析】线程的sleep()方法调用结束后,该线程进入就绪状态,而不是运行状态。
4.方法resume()负责恢复下列哪一个线程的执行( D )?
A.通过调用stop()方法而停止的线程 B.通过调用sleep()方法而停止的线程 C.通过调用wait()方法而停止的线程 D.通过调用suspend()方法而停止的线程
【解析】通过调用suspend()方法而停止的线程需要调用resume()恢复。
5.下面的哪一个关键字通常用来对对象加锁,从而使得对对象的访问是排他的( C )? A.serialize B.transient
C.synchronized D.static
【解析】synchronized用来对对象加锁,从而使得对对象的访问是排他的。
6.下列说法中,错误的一项是( A )。 A.线程一旦创建,则立即自动执行
B.线程创建后需要调用start()方法,将线程置于可运行状态
C.调用线程的start()方法后,线程也不一定立即执行 D.线程处于可运行状态,意味着它可以被调度
【解析】线程创建后需要调用start()方法,将线程置于可运行状态。
7.下列说法中,错误的一项是( A )。 A.Thread类中没有定义run()方法 B.可以通过继承Thread类来创建线程 C.Runnable接口中定义了run()方法 D.可以通过实现Runnable接口创建线程 【解析】Thread类和Runnable接口中都定义了run()方法,而start()方法只有Thread类中进行了定义,而Runnable接口中没有定义。
8.Thread类定义在下列哪个包中( B )? A.java.io B.java.lang C.java.util D.java.awt
【解析】Thread类定义在java.lang包中,因此使用时可以不用显式加载。
9.Thread类的常量NORM_PRIORITY代表的优先级是( C )。
A.最低优先级 B.最高优先级 C.普通优先级 D.不是优先级 【解析】NORM_PRIORITY代表的优先级是普通优先级。 10.下列关于线程优先级的说法中,错误的一项是( D )。
A.MIN_PRIORITY代表最低优先级 B.MAX_PRIORITY代表最高优先级
C.NORM_PRIORITY代表普通优先级 D.代表优先级的常数值越大优先级越低 【解析】代表优先级的常数值越大优先级越高
13
第10章 组件及事件处理
一、选择题
1.下列说法中错误的一项是( B )。
A.构件是一个可视化的能与用户在屏幕上交互的对象
B.构件能够独立显示出来
C.构件必须放在某个容器中才能正确显示 D.一个按钮可以是一个构件
【解析】构件不能独立显示,它必须放在某个容器中才能正确显示。
2.进行Java基本GUI设计需要用到的包是( C )。A.java.io B.java.sql C.java.awt D.java.rmi 【解析】进行Java基本GUI设计需要用到的包是java.awt和javax.swing
3.Container是下列哪一个类的子类( D )?
A.Graphics B.Window C.Applet D.Component 【解析】Container类是由Component类派生的。 4.java.awt.Frame的父类是( B )。 A.java.util.Window B.java.awt Window C.java.awt Panel D.java.awt.ScrollPane 【解析】java.awt.Frame的父类java.awt Window。 5.下列哪个方法可以将MenuBar加入Frame中( D )?
A.setMenu() B.addMenuBar() C.add() D.setMenuBar()
【解析】可以将MenuBar加入Frame中的方法是setMenuBar()。
6.下列叙述中,错误的一项是( D )。
A.采用GridLayout布局,容器中的每个构件平均分配容器空间
B.采用GridLayout布局,容器中的每个构件形成一个网络状的布局
C.采用GridLayout布局,容器中的构件按照从左到右、从上到下的顺序排列
D.采用GridLayout布局,容器大小改变时,每个构件不再平均分配容器空间
【解析】采用GridLayout布局,容器大小改变时,每个构件平均分配容器空间。
7.当单击鼠标或拖动鼠标时,触发的事件是( D )。
A.KeyEvent B.ActionEvent C.ItemEvent D.MouseEvent
【解析】对鼠标操作,触发的事件是MouseEvent事件。 8.下列哪一项不属于Swing的顶层组件( C )? A.JApplet B.JDialog C.JTree D.Jframe 【解析】JTree 只有在容器中才能显示,它不属于swing的顶层组件。
9.下列说法中错误的一项是( D )。
A.在实际编程中,一般使用的是Component类的子类 B.在实际编程中,一般使用的是Container类的子类 C.Container类是Component类的子类
D.容器中可以放置构件,但是不能够放置容器
【解析】容器中既可以放置构件,也可以放置容器。 10.下列哪一项不属于AWT布局管理器( D )?
A.GridLayout B.CardLayout C.BorderLayout D.BoxLayout 【解析】BoxLayout属于swing布局管理器,不属于AWT布局管理器。
11.下列说法中错误的一项是( A )。
A.MouseAdapter是鼠标运动适配器 B.WindowAdapter是窗口适配器
C.ContainerAdapter是容器适配器 D.KeyAdapter是键盘适配器
【解析】MouseAdapter是鼠标适配器,而MouseMotionAdapte才是鼠标运动适配器。
12.布局管理器可以管理构件的哪个属性( A )?
A.大小 B.颜色 C.名称 D.字体
【解析】布局管理器可以管理构件的位置和大小,而不能管理构件的其他属性。
13.编写AWT图形用户界面的时候,一定要import的语句是( B )。
A.import java.awt; B.import java.awt.*; C.import javax.awt D.import javax.swing.*; 【解析】“import java.awt.*;”语句的含义是加载awt包中的所有类,而其他都不是。
14.在类中若要处理ActionEvent事件,则该类需要实现的接口是( B )。
A.Runnable B.ActionListener C.Serializable D.Event
【解析】处理ActionEvent事件的类需要实现的接口是ActionListener,它其中包含了actionPerformed()方法。 15.下列不属于java.awt包中的基本概念的一项是( C )。
A.容器 B.构件 C.线程 D.布局管理器 【解析】线程不属于java.awt包中的基本概念的一项,其他三个都是。 16.下列关于AWT构件的说法中错误的一项是( D )。 A.Frame是顶级窗口,它无法直接监听键盘输入事件
14
B.对话框需要依赖于其他窗口而存在 C.菜单只能被添加到菜单栏中
D.可以将菜单添加到任意容器的某处
【解析】菜单只能添加到Applet、Frame等容器中,不能添加到任意容器的某处。
17.JPanel的默认布局管理器是( C )。
A.BorderLayout B.GridLayout C.FlowLayout D.CardLayout
【解析】Panel、JPanel和Applet的默认布局管理器都是FlowLayout。
18.下列说法中错误的是( B )。
A.在Windows系统下,Frame窗口是有标题、边框的 B.Frame的对象实例化后,没有大小,但是可以看到 C.通过调用Frame的setSize()方法来设定窗口的大小 D.通过调用Frame的setVisible(true)方法来设置窗口为
三、判断题
可见 【解析】Frame的对象实例化后,没有大小,也不能看到,只有通过调用Frame的setSize()和setVisible(true)方法才能设定窗口的大小和可见性。
19.下列说法中错误的是( D )。
A.同一个对象可以监听一个事件源上多个不同的事件
B.一个类可以实现多个监听器接口
C.一个类中可以同时出现事件源和事件处理者 D.一个类只能实现一个监听器接口
【解析】一个类可以实现多个监听器接口,从而实现对多个事件的监听。
20.下列选项中不属于容器的一项是( C )。 A.Window B.Panel C.FlowLayout D.ScrollPane
【解析】FlowLayout类属于布局管理器,而不属于容器。
1.容器是用来组织其他界面成分和元素的单元,它不能嵌套其他容器。( × ) 2.一个容器中可以混合使用多种布局策略。( × )
3.在Swing用户界面的程序设计中,容器可以被添加到其他容器中去。( √ )
4.使用BorderLayout布局管理器时,GUI组件可以按任何顺序添加到面板上。( √ ) 5.在使用BorderLayout时,最多可以放入五个组件。( √ )
6.每个事件类对应一个事件监听器接口,每一个监听器接口都有相对应的适配器。( × ) 7.Java中,并非每个事件类都只对应一个事件。( √ )
15
第11章 Java网络编程
一、填空题
1.URL是 统一资源定位器 的简称,它表示Internet/Intranet上的资源位置。这些资源可以是一个文件、一个 目录 或一个 对象 。
2.每个完整的URL由四部分组成: 传输协议 、 主机名 、 端口号 以及 文件名称 。 3.两个程序之间只有在 地址 和 端口号 方面都达成一致时才能建立连接。
4.使用URL类可以简单方便地获取信息,但是如果希望在获取信息的同时,还能够向远方的计算机节点传送信息,就需要使用另一个系统类库中的类 URLConnection 。 5.Socket称为 套接字 ,也有人称为“插座”。在两台计算机上运行的两个程序之间有一个双向通信的链接点,而这个双向链路的每一端就称为一个 Socket 。
6.Java.net中提供了两个类: ServerSocket 和 Socket ,它们分别用于服务器端和客户端的socket通信。
7.URL和Socket通信是一种面向 连接 的流式套接字通信,采用的协议是 TCP 协议。UDP通信是一种 无连接 的数据报通信,采用的协议是数据报通信协议 UDP 。
8.Java.net软件包中的类 DatagramSocket 和类 DatagramPacket 为实现UDP通信提供了支持。 9. receive() 和 send() 是DatagramSocket类中用来实现数据报传送和接收的两个重要方法。 10.JDBC API提供的类和接口在 java.sql 包中定义。
第12章 JDBC数据库操作
一、填空题
1.JDBC的基本层次结构由(Java程序)、( JDBC API)、(JDBC驱动程序管理器)、(驱动程序)和数据库五部分组成。 2.根据访问数据库的技术不同,JDBC驱动程序相应地分为(JDBC-ODBC Bridge)、(JDBC-Native API Bridge)、( JDBC-Middleware)和(Pure JDBC Driver)四种类型。
3.JDBC API所包含的接口和类非常多,都定义在(java.sql)包和(javax.sql)包中。
4.使用(Class.forName( ))方法加载和注册驱动程序后,由(DriverManager)类负责管理并跟踪JDBC驱动程序,在数据库和相应驱动程序之间建立连接。 5.(java.spl.Connection)接口负责建立与指定数据库的连接。 6.(PreparedStatement)接口的对象可以代表一个预编译的SOL语句,它是(Statement)接口的子接口。 7.(ResultSet)接口表示从数据库中返回的结果集。
16