一、判断题
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中的轻量级的构件。(X)
7. 与AWT构件不同,Swing构件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板(contentPane)上。(√)
8. 类Panel默认的布局管理器是GridLayout。(X)
9. 每个Java小应用程序必须定义为Jframe类的子类。(√)
10. 使用UDP通信时,用DatagramPacket类把要发送的信息打包。(√)
11.AWT组件称为重型组件(√)
12.Swing组件称为轻型组件(√)
13.容器类不是GUI组件(X)
14.使用add方法可以在框架的内容窗格中添加组件(√)
15.FlowLayout 是最简单的布局管理器(√)
16.布局管理器GridLayout不是以网格(矩阵)的形式排列组件(X)
17.布局管理器的属性不可以动态的改变(X)
18.每一时刻,一个容器只能有一个布局管理器(√)
19.要创建一个用户界面,需要创建一个框架或applet来存放用户界面组件(√)
20.Component类是所有用户界面的父类(√)
21. JFrame实例可以添加到容器中。( F )
22. JCheckBox继承了AbstractButton类的所有属性。( T )
23. JTextArea可以让用户输入多行文字。( T )
24. JSlider与JScrollbor类似,但是JSlider具有更多的属性和更多是显示形式。( T )
25.JTextField类继承了JTextComponent类,而JTextComponent类继承JComponent类。( T )
26. 从应用程序创建一个子窗口,不用先创建JFrame的一个子类。( F )
27. 在一个文本域中按下回车键就触发了ActionEvent事件。( T )
28. Java使用事件委托处理模型来处理事件,源对象和监听对象可以是同一个对象。( T )
29. JDBC是指Java程序与数据库连接的一种机制。( T )
30.可以给一个面板添加框架。(F )
31. 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. 线程一旦被创建,则自动运行 (F )
二、单选题
1、下列关于Java线程的说法那些是正确的( B )
A、每一个Java线程可以看成由代码、一个真实的CPU以及数据三部份组成。
B、创建线程的两种方法中,从Thread类中继承的创建方式可以防止出现多父类问题。
C、Thread类属于java.util程序包。
D、以上说法无一正确。
2、运行下列程序, 会产生什么结果?( D )
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、下列选项中,用于定义接口的关键字是( C )
A、import
B、implements
C、interface
D、protected
4.定义类头时能使用的修饰符是( C )。
A) private B) static C) abstract D) protected
5、下面哪个方法不可以在任何时候被任何线程调用?( A )
A、wait()
B、sleep()
C、yield()
D、synchronized(this)
6. 下列关于线程优先级的说法中,正确的是 ( D )
A) 线程的优先级是不能改变的
B) 线程的优先级是在创建线程时设置的
C) 在创建线程后的任何时候都可以设置
D) B和C
7.线程生命周期中正确的状态是( C )
A) 新建状态、运行状态和终止状态
B) 新建状态、运行状态、阻塞状态和终止状态
C) 新建状态、可运行状态、运行状态、阻塞状态和终止状态
D) 新建状态、可运行状态、运行状态、恢复状态和终止状态
8.Thread类中能运行线程体的方法是( D )
A) start() B) resume()
C) init() D) run()
9在程序读入字符文件时,能够以该文件作为直接参数的类是( A )
A) FileReader B) BufferedReader
C) FileInputStream D) ObjectInputStream
10)java.io包的File类是( D )
A) 字符流类 B) 字节流类
C) 对象流类 D) 非流类
11)下列描述中,正确的是( C )
A) 在Serializable接口中定义了抽象方法
B) 在Serializable接口中定义了常量
C) 在Serializable接口中没有定义抽象方法,也没有定义常量
D) 在Serializable接口中定义了成员方法
12. java中用于创建文件对象的类是( A )
A.File B. Object C. Thread D. Frame
13. 从键盘上输入一个字符串创建文件对象,若要判断该文件对象为目录文件或数据文件,可使用下列哪个方法?( C )
A.getPath() B. getName() C.isFile() D. isAbsolute()
14. 下列哪个类不对直接创建对象?( A )
A.InputStream B. FileInputStream C. BufferedInputStream D. DataInputStream
15. 从键盘上输入多个字符时,为了避免回车换行符的影响,需要使用下列哪个流方法?( D )
A.write() B. flush() C. close() D. skip()
16. 以对象为单位把某个对象写入文件,则需要使用什么方法? ( B )
A. writeInt() B writeObject() C. write() D.writUTF()
17. 下列哪个类的方法能够直接把简单数据类型写入文件?( C )
A.OutputStream B. BufferedWriter C. ObjectOutputStream. D.FileWriter
18. 若一个类对象能被整体写入文件,则定义该类时必须实现下列哪个接口?(D )
A.Runnable B. ActionListener C. WindowsAdapter D. Serializable
19. 下列哪种类型的数据能以对象的形式写入文件?( A )
A.String B. Frame C. Dialog D. Button
20. File类的方法中,用于列举某目录下的子目录及文件的方法是(C )
A.long length() B. long lastModified() C. String [] list() D. String getName()
21. 能够以字符串为单位写入文件数据的流类是( C )
A. FileOutputStream B. FileWriter C. BufferedWriter C. OutputStream
22. 能够向文件输入逻辑型数据的类是:( D )
A. FileOutputStream B. OutputStream C. FileWriter D.DataOutputStream
23. 在线程同步中, 为了唤醒另一个等待的线程,使用下列方法( C )
A. sleep() B. wait() C notify() D. join()
24. 为了得到当前正在运行的线程,可使用下列哪个方法?(B )
A.getName() B. Thread.CurrentThread(). B. sleep() D. run()
25. 以下( D )不属于线程的状态。
A.就绪状态 B。运行状态 C。挂起状态 D。独占状态
26.当线程被创建后,其所处的状态是( D )
A.阻塞状态 B。运行状态 C、就绪状态 D、新建状态
27. 当线程调用start()后,其所处状态为( C )
A.阻塞状态 B。运行状态 C、就绪状态 D、新建状态
28. Thread.sleep()方法调用后,当等待时间未到,该线程所处状态为( A )
A.阻塞状态 B。运行状态 C、就绪状态 D、新建状态
29.新生状态的线程其可能直接进入的状态是( D )
A.阻塞状态 B、运行状态 C、新建状态 D、结束状态
30.Thread.sleep()方法调用后,当等待时间已到,该线程所处状态为( C )
A.阻塞状态 B。运行状态 C、就绪状态 D、新建状态
31.当线程因异常而退出run()后,其所处状态为( D )
A.阻塞状态 B。运行状态 C、就绪状态 D、结束状态
32.wait()方法首先是哪个类的方法?(A )
A. Object B. Thread. C. Runnable D. File
33. 如果我们想实现“先把要写入文件的数据先缓存到内存中,再把缓存中的数据写入文件中”的功能时,则需要使用下列哪个类?( C )
A. FileReader B. OutputStream C. FilterOutputStream D. DataOutputStream
34. 用read()方法读取文件内容时,判断文件结束的标记为(C )
A. 0 B. 1 C -1 D. 无标记
35. 以下哪个方法只对使用了缓冲的流类起作用?(D )
A. read() B. write() C skip() D. flush()
36. Java提供的类InetAddress来进行有关Internet地址的操作.( D )
A. Socket B.ServerSocket C. DatagramSocket D InetAddress
37. InetAddress类中哪个方法可实现正向名称解析?( B )
A. isReachable() B. getHostAddress() C. getHosstName() D.getByName()
38. 为了获取远程主机的文件内容,当创建URL对象后,需要使用哪个方法获取信息(C )
A.getPort() B.getHost C.openStream() D.openConnection()
39. java程序中,使用TCP套接字编写服务端程序的套接字类是(B )
A. Socket B. ServerSocket C. DatagramSocket D.DatagramPacket
40. ServerSocket的监听方法accept()的返回值类型是(C )
A. void B. Object C. Socket D. DatagramSocket
41. ServerSocket的getInetAddress()的返回值类型是( C )
A. Socket B ServerSocket C.InetAddress D,.URL
42. 当使用客户端套接字Socket创建对象时,需要指定(A )
A.服务器主机名称和端口 B、服务器端口和文件 C、服务器名称和文件
D.服务器地址和文件
43.使用流式套接字编程时,为了向对方发送数据,则需要使用哪个方法(C )
A.getInetAddress() B. getLocalPort() C.getOutputStream() D.getInputStream()
44. 使用UDP套接字通信时,常用哪个类把要发送的信息打包? (D )
A. String B. DatagramSocket C. MulticastSocket D.DatagramPacket
45. 使用UDP套接字通信时,哪个方法用于接收数据 ( B )
A. read() B. receive() C. accept() D. Listen()
46. 若要取得数据包的中源地址,可使用下列哪个语句( A )?
A. getAddress() B. getPort() C. getName() D.getData()
47. 要使用java程序访问数据库,则必须首先与数据库建立连接,在建立连接前,应加载数据库驱动程序,该语句为( A )
A Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)
B. DriverManage.getConnection(“”,””,””)
C.Result rs= DriverManage.getConnection(“”,””,””).createStatement()
D. Statement st= DriverManage.getConnection(“”,””,””).createStaement()
48. 要使用java程序访问数据库,则必须首先与数据库建立连接,该语句为(B )
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 )
A. executeQuery() B.executeUpdate() C executeEdit() D.executeSelect()
50. java程序与数据库连接后,需要查看某个表中的数据,使用下列哪个语句?( B )
A. executeQuery() B.executeUpdate() C executeEdit() D.executeSelect()
51.Swing与AWT的区别不包括(D )
A.Swing是由纯Java实现的轻量级构件
B.Swing没有本地代码
C.Swing不依赖操作系统的支持
D.Swing支持图形用户界面
52. JAVA中提供了多种布局对象类。其中使用卡片式布局的是( D )
A.FlowLayout B.BoederLayout
C.BoxLayout D.CardLayout
53.每个使用Swing组件的程序必须至少有一个( B )
A. 按钮 B. 顶层容器 C. 标签 D. 菜单
54.下列哪个选项是创建一个标识有"关闭"按钮的语句?( C )
A.JTextField b = new JtextField("关闭");
B.JTextArea b = new JTextArea("关闭");
C.JButton b = new Jbutton("关闭");
D.JCheckbox b = new Jcheckbox("关闭");
55.鼠标事件的接口MouseListener能实现的事件不包括(D )
A.按下 B.释放
C.点击 D.拖动
56.在Java中,而无需在程序中用import导入的包是(D )
A.java.applet B.java.awt
C.java.util D.java.lang
57.类Panel默认的布局管理器是( C )
A.GridLayout B.BorderLayout
C.FlowLayout D.CardLayout
58.容器Frame缺省使用的布局编辑策略是( B )。
A.FlowLayout B.BorderLayout C.GridLayout D.CardLayout
59.容器类java.awt.container的父类是( B )。
A.java.awt.Window B.java.awt.Component
C.java.awt.Frame D.java.awt.Panel
60.编写Java图形界面程序时,若需要对发生的事件做出响应和处理,一般需要在程序的开头写上( D )语句。
A.import java.awt.* ; B.import java.applet.* ;
C.import java.io.* ; D.import java.awt.event.* ;
三、填空题
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、java.net包中提供了一个类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{
Thread.sleep(1000) ;
}catch( InterruptedException e){}
System.put.println("Hello");
}
}
}
26、下列程序的功能是把整型数组myArray中的各元素存入文件ints.dat中,请将程序补充完整。
Import java.io.*;
Public class WriteFile{
Public static void main (String[] A){
____int[]______ myArray={10,20,30,40};
Try{
FileOutputStream f=new FileOutputStream(“ints.dat”);
DataOutputStream_____Dos________=new DataOutputStream(f);
For(int i=0;i Dos.close(); }catch(IOException ioe){ System.out.println(“IOException”); } } } 27、面程序运行后,可以使用上下键移动文本框组件。请将程序补充完整。 public class Yidong extends Frame implements keyListener{ TextField b1; int x,y; Yidong (){ setLayout (new FlowLayout()); b1 = new TextField("走"); ____ this.add(b1); __ b1.addkeyListener(this); setSize (200,120); } public void keyPressed(KeyEvent e) { x=b1.getBouds().x; y=b1.getBouds().y; if(e.getKeyCode()==KeyEvent.VK_UP){ y=y-3; if(y<=1)y=50; b1.setLocation(x,y); } if(e.getkeyCode()==keyEven.VK_DOWN) { y=y+3; if(y>=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监听客户端的连接,如果有连接,则在服务端显示客户端的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.println("客户的地址:" + ____you.getInetAddress_____); } catch (IOException e) { } } } } 四、编程题 1、利用文件输入输出流编写一个实现文件拷贝的程序,源文件名和目标文件名通过命令行参数传入。 答: 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()); } } } 2、编写程序实现窗口,包含一个标签、一个文本框和一个按钮,当用户单击按钮时,程序把文本框中的内容复制到标签中。 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MyFrame extends JFrame implements ActionListener{ JLabel lbl; JTextField txt; JButton btn; public MyFrame(){ Container c=getContentPane(); //设置窗体的布局为FlowLayout setLayout(new FlowLayout()); 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.编写一个程序,从键盘输入一串字符,从屏幕输出并将其存入a.txt文件中。 3.答: 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("输出至文件完毕!"); } } 4、下列程序向屏幕输出文本文件内容:请完成所缺少的代码 class readtxt { public static void main(String[] args) { BufferedReader bf1 =new BufferedReader(f1); line!=null)判断所读的一行内容是否为空; line = bf1.readLine(); 继续读入下一行 bf1.close(); 关闭文件的输入流; }catch(IOException e) {e.printStackTrace(); } 5、设服务器端程序监听端口为8629, 当收到客户端信息后,首先判断是否是“BYE”,若是,则立即向对方发送“BYE”,然后关闭监听,结束程序。若不是,则在屏幕上输出收到的信息,并由键盘上输入发送到对方的应答信息。请编写程序完成此功能。 mport java.net.*; import java.io.*; class Server{ public Server() { try { ServerSocket ss = new ServerSocket(8629); 服务器端已运行,等待客户端连接: Socket socket = ss.accept(); //接收客户端的连接请求; BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); socket.getOutputStream(),true); String line; line.equals("BYE")) { out.println("BYE"); break;} 客户输入为 :" + line); 请输入回答:" ); line=br.readLine(); //从键盘上输入信息; out.println(line); 向对方发送信息 } } catch (IOException e){} } public static void main(String[] args) throws Exception{ new Server(); } } 6、TCP客户端需要向服务器端8629发出连接请求,与服务器进行信息交流,当收到服务器发来的是“BYE”时,立即向对方发送“BYE”,然后关闭连接,否则,继续向服务器发送信息。 import java.io.*; import java.net.*; class Client2{ public Client2() { try {String s; Socket socket = new Socket("服务器地址", 8629); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); socket.getOutputStream(),true); { System.out.println("请向服务器输出一条字符串:"); out.println(s); //向服务器发出信息; s=in.readLine().trim(); 收到服务器发来的信息; 服务器返回的信息是:"); s.equals("BYE")) out.println("BYE"); } catch (IOException e){} } public static void main(String[] args) { new Client2(); }} 7、设access数据库中有student表,表中存放学生学号,姓名两个字段,请编写程序输出表中所有记录信息。(假定已经配置好数据源为:mydb11) import java.sql.*; class access{ public static void main(String args[]){ Connection con; Statement sql; //声明Statement对象 ResultSet rs; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e){ System.out.println(""+e); } try{ con=DriverManager.getConnection("jdbc:odbc:mydb11 sql=con.createStatement(); rs=sql.executeQuery("Select * FROM mytable"); while(rs.next()){ String num=rs.getString(1); //获得数据库第一列 String name=rs.getString(2); System.out.print("学号:"+num); //输出信息 System.out.print(" 姓名:"+name); System.out.println(); con.close();} catch(SQLException el){} }