1、JAVA语言基础内部测试题一单项选择题(请选择最符合题目要求的答案) (每题 2分)1. Java语言中提供了一个( )线程,自动回收动态分配的内存。A异步B消费者C守护D垃圾收集2. 以下哪个关键字可以用来为对象加互斥锁?( )A、transient B、static C、 serialize D、synchronized3. 当( )方法终止时,能使线程进入死亡状态。ArunBsetProrityCyieldDsleep4. 用( )方法可以改变线程的优先级。ArunBsetProrityCyieldDsleep5. 线程通过( )方法可以使具有相同优先级线程获得处理器。ArunBsetP
2、rorityCyieldDsleep6. 线程通过( )方法可以休眠一段时间,然后恢复运行。ArunBsetProrityCyieldDsleep7. 方法 resume( )负责重新开始( )线程的执行。A被 stop( )方法停止B被 sleep( )方法停止C被 wait( )方法停止D被 suspend( )方法停止8. 编译和运行下面的应用程序,并在命令行界面输入 12345,则回车后屏幕输出的结果是( ).public class A public static void main(String args) throws IOExceptionBufferedReader buf=
3、new BufferedReader(new InputStreamReader(System.in);String str=buf.readLine();int x=Integer.parseInt(str);System.out.println(x/100); A) 45 B)5 C) 123 D) 123459. 下面的程序段执行后输出的结果是( )StringBuffer buf=new StringBuffer(“Beijing2008“);buf.insert(7,“);System.out.println(buf.toString();A) Beijing2008 B) Beij
4、ing2008 C) Beijing2008 D) Beijing#2008 10. 下面的程序编译运行后输出的结果是( )。public class A implements Runnable public static void main(String argv) A a = new A();Thread t = new Thread(a);t.start();public void run() while(true) tryThread.currentThread().sleep(1000);catch(InterruptedException e)System.out.println(
5、e.toString();System.out.println(“looping while“);A) 在屏幕上重复输出“looping while“。 B) 在屏幕上输出一次“looping while“。 C) 没有结果输出。 D) 以上说法都错误。11. 下面的程序段创建了 BufferedReader类的对象 in,以便读取本机 d盘 my文件夹下的文件 1.txt。File 构造函数中正确的路径和文件名的表示是( )File f=new File(填代码处);file=new FileReader(f);in=new BufferedReader(file);A) “1.txt“ B
6、) “d:my1“ C) “d:my1.txt“ D) “d: my1.txt“12. 若创建 RandomAccessFile 类对象 raf2:RandomAccessFile raf2 = new RandomAccessFile(“1.txt“,“rw“ ); ,该语句的功能是( )A)打开当前目录下的文件 1.txt,既可以向文件写入数据,也可以从文件读取数据。 B)打开当前目录下的文件 1.txt,但只能向文件写入数据,不能从文件读取数据。C)打开当前目录下的文件 1.txt,但不能向文件写入数据,只能从文件读取数据。D) 以上说法都不对。13. 下面的程序段执行后输出的结果是(
7、)String s=“javaok123456“;boolean b=s.startsWith(“java“); boolean b1=s.endsWith(“456“);System.out.println(b+“ “+b1);A) true true B) true false C) false true D) false false 14. 下面的程序编译运行后,从键盘输入 9,回车后输出的结果是( )import java.io.*;public class Test public static void main(String args) throws IOException Buf
8、feredReader buf=new BufferedReader(new InputStreamReader(System.in); while(true) String str=buf.readLine();if(str.equals(“quit“)break;int x=Integer.parseInt(str);System.out.println(x*x); A) 9 B) 81 C) quit D)3 15. 下面句话是正确的 ? A 是算术右移操作符 . B 是算术右移操作符 D 是算术右移操作符 16. 当 Frame 改变大小时,放在其中的按钮大小不变,则使用如下哪个 la
9、yout( )A 、 FlowLayout B 、 CardLayout C 、 BorderLayout D 、 GridLayout 17. 如下哪个方法可以从 WindowEvent 获取事件源 ? ( )A 、 getFrame() B 、 getID() C 、 getSource() D 、 getEvent() 18. 监听器接口的方法返回值是什么?( )A 、 int B 、 String C 、 void D 、 Object 19. 下面哪个方法与 applet 的显示无关 ? ( )A 、 update() B 、 draw() C 、 repaint() D 、 pai
10、nt() 20. 下面哪个不是 Java 中的容器 ? ( )A 、 ScrollPane B 、 Canvas C 、 Dialog D 、 Applet 二多项选择题(所有答案都选对,则该题得分,所选答案错误或不能选出所有答案,则该题不得分) (每题 2分)1. ( )方法可以用来暂时停止当前线程的运行。Astop( )Bsleep( )Cwait( )Dsuspend( )2. 有三种原因可以导致线程不能运行,它们是( )A等待B阻塞C休眠D挂起及由于 I/O操作而阻塞3. 下面的程序第 7行创建了一个文件输出流对象,用来向文件 test.txt中输出数据,假设程序当前目录下不存在文件
11、test.txt,编译下面的程序 Test.java后,将该程序运行两次,则文件 test.txt 的内容是( )1: import java.io.*;2: public class Test 3: public static void main(String args) 4: try 5: String s=“ABC“;6: byte b=s.getBytes();7: FileOutputStream file=new FileOutputStream(“test.txt“,true);8: file.write(b);9: file.close();10: 11: catch(IOEx
12、ception e) 12: System.out.println(e.toString();13: 14: 15: A) ABC ABC B) ABC C)Test D) Test Test4. 新建一个字节流对象,下面哪些选项的代码是正确的?( )A)new BufferedWriter(new FileWriter(“a.txt“);B)new BufferedReader(new FileInputStream(“a.dat“);C)new DataOutputStream(new FileOutputStream(“a.dat“);D)new ObjectInputStream(ne
13、w FileInputStream(“a.dat“);5. 以下关于 File 类说法正确的是:( )A 一个 File 对象代表了操作系统中的一个文件或者文件夹B 可以使用 File 对象创建和删除一个文件C 可以使用 File 对象创建和删除一个空文件夹D 当一个 File 对象被垃圾回收器回收时,系统上对应的文件或文件夹也被删除6. 下面关于 FileInputStream 类型说法正确的是:A创建 FileInputStream 对象是为了读取文件B 创建 FileInputStream 对象时,如果硬盘上对应的文件不存在,则抛出一个异常C 利用 FileInputStream 对象可
14、以创建文件D FileInputStream 对象读取文件时,只能读取文本文件。7. 下面( )类能够支持 TCP/IP连接。AInetAddressBPacketCSocketDServerSocket8. 下列关于线程优先级的说法中,正确的是 A) 线程的优先级是不能改变的 B) 线程的优先级是在创建线程时设置的 C) 在创建线程后的任何时候都可以设置 D) 在创建线程后不可以设置9. 以下属于字符流的是( )A.DataInputStream B.DataOutputStreamC.FileReader D.FileWriter10. 下面的选项中,哪些选项属于“汽车类”的行为( ) 。
15、A、启动 B、刹车 C、减速 D、速度三填空题(每空一分,10 分)1. 对于 FileInputStream 来说,从方向上来分,它是_ 输入流 _流,从数据单位上分,它是_ 字节流 _ _流,从功能上分,它是_处理_ _流。2. FileInputStream 有三个重载的 read 方法,其中1) 无参的 read() 方法返回值为_ 整型 _类型,表示_一个一个读取_ _2) int read(byte bs)方法返回值表示 _ 整型 _,参数表示_ _ _ 返回的字节数 _3.创建 FileOutputStream 对象时,如果对应的文件在硬盘上不存在,则会_新建一个_ _;如果对应
16、的文件在硬盘上已经存在,则_ 覆盖原文件 _;如果使用 FileOutputStream(String path, boolean append) 这个构造方法创建FileOutputStream 对象,并给定第二个参数为 true,则效果为 _ 不覆盖原来的内容,进行追加 _。四问答题(每题 5分,共 20分)1.简述程序、进程和线程之间的关系?什么是多线程程序?程序是一段静态的代码,它是应用软件执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行到执行完毕的一个完整过程。这个过程也是进程本身从产生、发展、到消亡的过程。线程是比进程更小的单位。一个进程在其执行过程中,可以产生多
17、个线程,形成多个执行流。每个执行流即每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。多线程程序是指一个程序中包含多个执行流。2.线程有哪几个基本状态?它们之间如何转化?简述线程的生命周期。新建状态 就绪状态 通过调用 start()函数唤醒线程运行状态 死亡状态 终止 run()方法就可以新建状态,可运行状态,运行状态,阻碍状态,终止状态。对线程调用各种控制方法,就使线程从一种状态转换到另一种状态。线程的生命周期从新建开始,在可运行、运行和其他阻碍中循环,在可运行、运行、对象锁阻塞、等待阻塞中循环,最终在运行后 run()方法结束后终止。3.如何在 Java程序中实现多线程?J
18、ava线程有两种形式,继承 thread 和实现 runnable接口,实例化多个 thread 并同时调用 Start 函数就可以实现多个线程4、分别写出 2个你熟悉字节流,字符类,包装流的类名称字节流 InputStream firewrite 字符流 fileinputstream fileoutputstream 包装流 datainputstream dataoutputstream五、综合题(10 分)1、介绍使用 java ServerSocket创建服务器端程序的 5个步骤,并写出相应语句。1、创建 ServerSocket设置端口 2、等待客户端连接3、创建输出流4、向客户端
19、发送指令5、/1.创建服务器端 ServerSocketServerSocket serverSocket = new ServerSocket(8888,5);System.out.println(“服务器启动成功:“+serverSocket.toString();/2.等待客户连接Socket clientSocket = serverSocket.accept();System.out.println(“有客户来,请接客.“);/3.绑定输入流InputStream is = clientSocket.getInputStream();InputStreamReader isr = n
20、ew InputStreamReader(is);BufferedReader br = new BufferedReader(isr);/4.绑定输出流OutputStream os = clientSocket.getOutputStream();PrintStream ps = new PrintStream(os);/5.接收数据System.out.println(“服务器端接收:“+br.readLine();/6.发送数据String str = “欢迎连接到本服务器.“;ps.println(str);/7.关闭 socket通信clientSocket.close()2、介绍
21、使用 java Socket创建客户器端程序的 4个步骤,并写出相应语句。/1.创建客户端 Socket;Socket socket = new Socket(“127.0.0.1“,8888);System.out.println(“连接服务器成功“);/2.绑定输入输出流OutputStream os = socket.getOutputStream();PrintStream ps = new PrintStream(os);InputStream is = socket.getInputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);/3.发送数据ps.println(“我是客户端,请求连接.“);/4.接收数据System.out.println(“客户端接收服务器数据:“+br.readLine();/5.关闭 Socketsocket.close(); BufferedReader br= new BufferedReader(new InputStreamReader(socket.getInputStream();System.out.println(“服务端口类说:“+br.readLine();