《Java程序设计》笔试卷B试题

更新时间:2023-03-12 01:55:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

姓名 学号 学院(系) 专业 年级 班(密封线内勿答题) XXXXXX大学 XXX学院

《Java程序设计》课程 期末考试卷

(200x—200x学年 第x学期) 本科□ 专科?

A卷□ B卷? C卷□ (考试时间120分钟)

题号 分数

一 二 三 四 五 总分 一、 单选题(本大题共20个小题,每小题1分,共20分)

得分 评阅人 (密封线内勿答题) 1、下列程序段执行后的结果是( )。

String s=new String(\for(int i=0;i

A) aceg B) ACEG C) abcdefg D) abcd 2、有整型数组:int[] x={12,35,8,7,2};,则调用方法Arrays.sort(x)后,数组x中的元素值依次是( ).

A) 2 7 8 12 35 B) 12 35 8 7 2 C) 35 12 8 7 2 D) 8 7 12 35 2

3、下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是( )。

File f=new File(填代码处); file=new FileReader(f);

in=new BufferedReader(file);

A) \ B) \ C) \ D) \

4、应用程序的main方法中有以下语句,则输出的结果是 ( )。 String s1=new String(\ String s2=new String(\ boolean b1=s1.equals(s2);

boolean b2=(s1==s2);

System.out.print(b1+\ \

A)true false B) false true C) true true D)false false 5、应用程序的main方法中有以下语句,则输出的结果是 ( )。

第 1 页 共 11 页

XXXXXX大学 XXX学院

Hashtable hashtable=new Hashtable(); hashtable.put(\ hashtable.put(\ hashtable.put(\ System.out.println(hashtable.get(\

A) a B) abcde C) 12345 D) 67890 6、下面的程序编译运行后输出的结果是( )。

public class Test {

public static void main(String args[]) { X a=new X( ) { public void showX() { System.out.println(a-b); } }; a.showX(); } }

class X {

int a=5,b=3;

public void showX() { System.out.println(a+b); } }

A) -2 B) 8 C) 5 D) 3 7、下面语句的功能是( )。

RandomAccessFile raf2 = new RandomAccessFile(\

A)打开当前目录下的文件1.txt,既可以向文件写数据,也可以从文件读数据。 B)打开当前目录下的文件1.txt,但只能向文件写入数据,不能从文件读取数据。 C)打开当前目录下的文件1.txt,但不能向文件写入数据,只能从文件读取数据。 D) 以上说法都不对。

8、应用程序的main方法中有以下语句,则输出的结果是 ( )。 String s=\ int n=s.indexOf(\ int k=s.indexOf(\ int m=s.indexOf(\ String s2=s.substring(m+1); System.out.println(s2);

A)123456 B)67890 C) aaa D) bbb 9、下面程序段执行后b的值是( )。 Integer integ =new Integer(9);

boolean b = integ instanceof Object; A) 9 B) true C) 1 D) false

10、应用程序Test.java的源程序如下,在命令行键入: java Test aaa bb c

第 2 页 共 11 页

XXXXXX大学 XXX学院

回车后输出的结果是 ( )。

public class Test {

public static void main(String args[]) { int k1=args.length;

int k2=args[1].length(); System.out.print(k1+\ \ } }

A)3 2 B)1 2 C) 1 3 D) 3 3 11、应用程序的main方法中有以下语句,则输出的结果是 ( )。 int b[][]={{1}, {2,2}, {2,2,2}}; int sum=0;

for(int i=0;i

System.out.println(\

A) 32 B)11 C) 2 D) 3 12、下面的程序编译运行后,输出的结果是( ).

import java.util.Arrays; public class Test {

public static void main(String[] unused) {

String[] str = {\ Arrays.sort(str);

int index=Arrays.binarySearch(str,\ System.out.println(index); } }

A) 0 B) 1 C)2 D)3 13、下列语句序列执行后,num的值是( )。 Random rd1=new Random(); int num=Math.abs(rd.nextInt())%4+1;

A)1~4之间的随机值 B) 0~3之间的随机值 C) 0 14、应用程序的main方法中有以下语句,则执行后输出的结果是 ( int[] x={125,21,5,168,98}; int max=x[0];

for(int i=1;i max) max =x[i]; }

System.out.println(max);

A) 125 B) 5 C) 98 D) 168 15、程序Test.java编译运行后输出的结果是( )。

public class Test {

第 3 页 共 11 页

D)4 )。

XXXXXX大学 XXX学院

String s1=\

public static void main(String args[]) { int z=2;

Test t=new Test(); System.out.println(t.s1+z); } }

A) java2 B)2 C)没有输出结果 D)java 16、应用程序的main方法中有以下语句,则输出的结果是 ( )。 String s1=\

double x=Double.parseDouble(s1); int y=Integer.parseInt(s2); System.out.println(x+y);

A) 12.5 B) 120.5 C) 12 D) “12.5” 17、下面的程序段执行后输出的结果是( )。

StringBuffer buf=new StringBuffer(\ buf.insert(7,\

System.out.println(buf.toString()); A) Beijing@2008 B) Beijing2@008

C) Beijing2008@ D) Beijing20@08

18、下面的程序创建了一个文件输出流对象,用来向文件test.txt中输出数据,假设程序当前目录下不存在文件test.txt,编译下面的程序Test.java后,将该程序运行3次,则文件test.txt 的内容是( )。

import java.io.*; public class Test {

public static void main(String args[]) { try { String s=\ byte b[]=s.getBytes(); FileOutputStream file=new FileOutputStream(\ file.write(b); file.close(); } catch(IOException e) { System.out.println(e.toString()); } } }

A) ABCABC B) ABCDE C)Test D) ABCDE ABCDE ABCDE 19、下面那些方法不是接口Collection中已声明的方法( )? A)添加元素的add(Object obj) 方法 B)删除元素的remove(Object obj)方法 C)得到元素个数的length()方法

D)返回迭代器的iterator()方法,迭代器用于元素遍历

第 4 页 共 11 页

XXXXXX大学 XXX学院

20、关于下面的程序的说法不正确的是()。

1: public class Test implements Runnable { 2: String name;

3: public Test(String s){ 4: name=s; 5: }

6: public static void main (String[] args) {

7: Thread thread1=new Thread (new Test(\8: Thread thread2=new Thread (new Test(\9: thread1.start(); 10: thread2.start(); 11: }

12: public void run () {

13: System.out.print(name); 14: } 15: }

A)程序第12~14行的run方法是Runnable接口中的方法。 B)程序第9、10行的方法调用的功能是分别启动两个线程对象thread1和thread2。 C)程序能编译运行,输出结果:111222。

D)程序能编译运行,但没有任何结果输出。

二、多选题(本大题共10个小题,每小题2分,共20分)

得分 评阅人 21、下面main()方法的定义哪些是正确的( )?

A)public static void main(String args[]) {} B)public static void main(String[]) {}

C)public static void main(String[] args) {} D)public static void main(String [] x) {} 22、下面是在命令行运行Java应用程序A,怎样才能在main(String args[])方法中访问单词\ )?

java A the first snow , the first snow came.

A)args[0] B)args[1] C)args[2] D)args[5] 23、线程对象的生命周期中,通常经历下面哪些状态( )。

A)新建 B)运行 C)就绪 D)死亡 24、下面说法正确的是( )。

A)final 可修饰类、属性(变量)、方法。 B) abstract可修饰类、方法。

C)抽象方法只有方法头,没有方法体。 D)关键字final和abstract不能同时使用。

25、下面关于java中输入/输出流的说法正确的是( )。

A) FileInputStream与FileOutputStream类用读、写字节流。 B) Reader与Writer类用来读、写字符流。

C) RandomAccessFile既可以用来读文件,也可以用来写文件。 D) File类用来处理与文件相关的操作。

第 5 页 共 11 页

XXXXXX大学 XXX学院

26、下面说法正确的是( )。

A)如果某公共的接口被声明在一个源文件中,则接口必须与源文件具有相同的名字。

B)如果源文件包含import语句,则该语句必须是除空行和注释行外的第一个语句行。

C)如果某源文件包含package语句,则该语句必须是第一个非空、非注释行。

D)接口中的方法必定是抽象方法,但可以不用关键字abstract修饰。 27、下面关于Java中异常处理try块的说法正确的是( )?

A) try块后通常应有一个catch 块,用来处理try块中抛出的异常。 B) catch 块后必须有finally块。

C)可能抛出异常的方法调用应放在try块中。 D)对抛出的异常的处理必须放在try块中

28、下面关于对象串行化(Serializable)的说法正确的是( )。

A)一个类实现接口Serializable就能使之串行化,对象串行化并没有具体方法需要实现。

B)一个对象串行化后,能通过对象流读取对象或写入对象。 C)用transient关键字修饰的变量将不参与串行化。

D)串行化一个类,必须保证在恢复时java虚拟机能找到这个类的.class文件,否则将会出现ClassNotFoundException。

29、下面关于进程、线程的说法正确的是( )。 A)进程是程序的一次动态执行过程。一个进程在其执行过程中,可以产生多个线程——多线程,形成多条执行线索。

B)线程是比进程更小的执行单位,是在一个进程中独立的控制流,即程序内部的控制流。线程本身不能自动运行,栖身于某个进程之中,由进程启动执行。 C)Java多线程的运行与平台相关。

D)对于单处理器系统,多个线程分时间片获取CPU或其他系统资源来运行。对于多处理器系统,线程可以分配到多个处理器中,从而真正的并发执行多任务。 30、关于BufferedReader类的readLine()方法,以下说法正确的是()。 A)方法readLine()每次读取一行数据。 B)方法readLine()每次读取一个字节。

C)该方法可能抛出IOException异常,调用该方法时通常应将它放到try块中,并通过catch块处理异常。

D)如果读到流的末尾,该方法返回的结果为null。

三、填空题(本大题共5个小题,每小题4分,共20分)

得分 评阅人 31、若要输出以下格式的时间: 2006年10月21日星期六22时29分27秒 请将下面的程序段补充完整:

SimpleDateFormat dateFormat2= new SimpleDateFormat(_____(1)_____); System.out.println(dateFormat2._____ (2)______(new Date().getTime()));

第 6 页 共 11 页

XXXXXX大学 XXX学院

32、若某个方法的方法体中产生了异常,方法体中应通过关键字____(1)____抛出该异常对象。若某类的对象已声明,但没有被实例化,当调用对象的方法时,抛出的异常类型是:___(2)___。

33、类MulThread实现了Runnable接口,通过MulThread类对象创建线程对象t1的语句是:____(1)____。线程t1可通过方法调用____(2)_____启动。

34、假定一个英文表示的地址格式要求是:数字号码(至少1个),然后是一个或多个空格隔开,然后是一个单词(至少两个字母)表示的地名,或用空格隔开的两个单词(至少两个字母)表示的地名,例如: 5 waiganxijie Beijing,就是符合要求的地址格式。下面应用程序的main方法中使用JOptionPane类的文本输入对话框输入地址,通过正则字符串和字符串类的matches()方法判断是否为地址格式要求的地址。请完成程序填空。

import javax.swing.*;

import java.util.regex.Pattern; public class UseMatchesMethod{

public static void main( String args[] ) { String regex=____(1)_____; String input=JOptionPane.showInputDialog(\请输入地址\ if(____(2)____) System.out.println(input+\是有效的地址!\ else System.out.println(input+\不是有效的地址!\ } }

35、下面的程序的功能是:读取当前目录下的英文本本文件word.txt,并统计不同单词(不区分大小写)在文章中出现的次数,并将结果保存到当前目录下的文本文件1.txt中,请将程序补充完整。 import java.io.*; import java.util.*;

public class SortWord{

public static void main(String[] args)throws IOException{ TreeMap map=new TreeMap();

BufferedReader in=new BufferedReader(new FileReader(\ String line;

while((line=in.readLine())!=null){

StringTokenizer st=new StringTokenizer(line); while(st.hasMoreTokens()){

String word=st.nextToken().toLowerCase(); Object obj=map.get(word); if(obj==null){

_________________; } else {

Integer count=(Integer)obj;

map.put(word,new Integer(count.intValue()+1));

第 7 页 共 11 页

XXXXXX大学 XXX学院

} } }

in.close();

List keys=new ArrayList(map.keySet());

PrintWriter out=new PrintWriter(______________); Iterator iterator=keys.iterator(); while(iterator.hasNext()){

Object key=iterator.next();

out.println(key+\ }

out.close(); } }

四、程序阅读题(本大题共4个小题,每小题6分,共24分)

得分 评阅人 36、阅读下面的程序,回答问题(?问3分,?问3分,共6分)。 import java.awt.*; import javax.swing.*;

public class T extends JFrame { T( ) {

super(\

Container con=this.getContentPane(); con.setLayout(new GridLayout(2,3)); con.add(new JButton(\ con.add(new JButton(\ con.add(new JButton(\ con.add(new JButton(\ con.add(new JButton(\ con.add(new JButton(\ setSize(200, 80); setVisible(true); }

public static void main(String args[]) { new T(); } }

?画图表示程序运行后的图形界面。

?如果程序通过实现某个接口处理按钮的动作事件,则该接口名为何?接口中的方法头声明如何?

第 8 页 共 11 页

XXXXXX大学 XXX学院

37、阅读下面的程序,回答问题(?问3分,?问3分,共6分)。。

import java.util.*; public class T {

public static void main(String args[]) { Set set = new TreeSet();

set.add(new Integer(10)); set.add(new Integer(5)); set.add(new Integer(15)); set.add(new Integer(5)); set.add(new Integer(10));

System.out.println(\ Iterator it=set.iterator(); while(it.hasNext()){

System.out.print(it.next()+\ \ } } }

?程序运行后输出的结果如何?

?说明java中的集合(Set接口)和映射(Map接口)的主要区别。

38、阅读下面的程序,并回答问题(?问3分,?问3分,共6分)。

import java.io.*; public class Test {

public static void main(String args[]) throws IOException { BufferedReader buf=new BufferedReader(

new InputStreamReader(System.in)); while(true) {

String str=buf.readLine(); if(str.equals(\ break;

int x=Integer.parseInt(str); System.out.println(x*x); } } }

编译运行上面的程序:

?从键盘输入5,回车后输出的结果如何?

?从键盘输入quit,回车后程序执行情况如何?

39、阅读下面的程序,并回答问题(?问3分,?问3分,共6分)。

import javax.swing.*; import java.awt.*;

import java.awt.event.*;

public class MenuTest extends JFrame{

JTextArea theArea; public MenuTest(){ super(\

Container contentPane = this.getContentPane();

theArea = new JTextArea( );

第 9 页 共 11 页

XXXXXX大学 XXX学院

theArea.setText(\ theArea.setLineWrap(true);

contentPane.add(new JScrollPane(theArea),BorderLayout.CENTER);

JMenu fontMenu = new JMenu(\

JMenuItem fontSize= new JMenuItem(\ fontSize.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {

String sizeString=JOptionPane.showInputDialog( \字号大小\ int fontSize=Integer.parseInt(sizeString); theArea.setFont(

new Font(\楷体_gb2312\ } });

fontMenu.add(fontSize);

JMenuItem exit= new JMenuItem(\ fontMenu.add(exit);

使用匿名内部类对象处理该菜单项事件:点击退出程序的运行。

JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); menuBar.add(fontMenu);

this.setSize(300,200); this.setVisible(true); }

public static void main(String[] args){ new MenuTest(); } }

?图示程序运行后的图形界面。

?在程序中使用匿名内部类对象处理菜单项“Exit”的事件响应:点击它则退出程序的运行。请写出满足题目要求的代码。

五、编程题(本大题共3个小题,40小题4分,41、42小题各6分,共16分)

得分 评阅人 40、请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变

量face和suit:face描述一张牌的牌面值(如:\\\ \);suit描述一张牌的花色(如:\)。定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限的方法getFace(),得到扑克牌的牌面值; 定义protected访问权限的方法getSuit(),得到扑克牌的花色; 定义方法toString(),返回表示扑克牌的花色和牌面值字符串(如“Ace of Hearts”、“Ten of Clubs”等)。

第 10 页 共 11 页

XXXXXX大学 XXX学院

41、程序中已定义如下字符串数组faces,用来表示牌面面值: String faces[]={ \ \ \并已定义名为hand1的Card数组如下,存放一幅牌(共5张): Card hand1[]=new Card[5];

设已发了一幅牌,并存放在hand1数组中,为了统计该幅牌(54张牌中的任意5张)的每个面值的牌各有多少(因花色不同,不同面值的牌可能有0、1、2、3、4张),程序中已定义一个整型数组: int numbers1[]=new int[13] ;

存放5张牌中13个不同面值中的张数。

请编写方法:void totalHand(),方法的功能是统计一幅牌中不同面值的牌的张数,结果保存在整型数组numbers1中。

42、为了模拟两个线程共享数据,并实现线程对共享数据的同步操作,模拟生产和消费的同步。定义SynchronizedBuffer类做为生产线程和消费线程的共享数据类,类中定义整型缓冲区buffer,用来存放一个整数;定义方法set,用来模拟生产过程,即给变量buffer设置值,该方法由生产线程调用;定义方法get,用来模拟消费过程,即取变量buffer的值,该方法由消费线程调用。生产和消费的逻辑要求是:必须先生产一个整数,然后才能消费该整数;消费后才能继续生产。请完成程序中set方法的编写。

public class SynchronizedBuffer { private int buffer = -1;

private boolean occupiedBuffer= false;

/*编写set方法设置buffer值,该方法将由生产线程调用,模拟生产过程*/ …….;

/*编写get方法得到buffer值,该方法将由消费线程调用,模拟消费过程*/ public synchronized int get() {

String name = Thread.currentThread().getName(); while (!occupiedBuffer) { try {

System.err.println( name

+\试图消费,但还没有生产!等待生产!\ wait(); }

catch ( InterruptedException e ) { e.printStackTrace(); } }

occupiedBuffer=false;

System.out.println( name+ \消费一个整数:\ notify();

return buffer; } }

第 11 页 共 11 页

XXXXXX大学 XXX学院

41、程序中已定义如下字符串数组faces,用来表示牌面面值: String faces[]={ \ \ \并已定义名为hand1的Card数组如下,存放一幅牌(共5张): Card hand1[]=new Card[5];

设已发了一幅牌,并存放在hand1数组中,为了统计该幅牌(54张牌中的任意5张)的每个面值的牌各有多少(因花色不同,不同面值的牌可能有0、1、2、3、4张),程序中已定义一个整型数组: int numbers1[]=new int[13] ;

存放5张牌中13个不同面值中的张数。

请编写方法:void totalHand(),方法的功能是统计一幅牌中不同面值的牌的张数,结果保存在整型数组numbers1中。

42、为了模拟两个线程共享数据,并实现线程对共享数据的同步操作,模拟生产和消费的同步。定义SynchronizedBuffer类做为生产线程和消费线程的共享数据类,类中定义整型缓冲区buffer,用来存放一个整数;定义方法set,用来模拟生产过程,即给变量buffer设置值,该方法由生产线程调用;定义方法get,用来模拟消费过程,即取变量buffer的值,该方法由消费线程调用。生产和消费的逻辑要求是:必须先生产一个整数,然后才能消费该整数;消费后才能继续生产。请完成程序中set方法的编写。

public class SynchronizedBuffer { private int buffer = -1;

private boolean occupiedBuffer= false;

/*编写set方法设置buffer值,该方法将由生产线程调用,模拟生产过程*/ …….;

/*编写get方法得到buffer值,该方法将由消费线程调用,模拟消费过程*/ public synchronized int get() {

String name = Thread.currentThread().getName(); while (!occupiedBuffer) { try {

System.err.println( name

+\试图消费,但还没有生产!等待生产!\ wait(); }

catch ( InterruptedException e ) { e.printStackTrace(); } }

occupiedBuffer=false;

System.out.println( name+ \消费一个整数:\ notify();

return buffer; } }

第 11 页 共 11 页

本文来源:https://www.bwwdw.com/article/47bw.html

Top