《Java程序设计》笔试卷B试题
更新时间:2024-04-26 22:21: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 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 页
正在阅读:
《Java程序设计》笔试卷B试题04-26
财务人员配备、晋升、考核、薪资制度06-19
合作建房合同通用9篇04-03
查经资料-以诺二书06-11
雷锋精神永不灭作文1000字03-12
李海山走在前行的路上06-20
一年级下册数学思维训练题集 - 图文11-09
田恒平教授讲座有感103-04
2018中考物理电路与电流专题复习练习题03-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 试卷
- 试题
- Java