1、第 1 页 共 10 页Java 程序设计课程 期末考试卷(考试时间 120 分钟)题号 一 二 三 四 五 总分分数一、 单选题(本大题共 20 个小题,每小题 1 分,共 20 分)得分 评阅人1、编译和运行下面的应用程序,屏幕输出的结果是( )。public class Test public static void main(String args) A a=new A(“aaaaa“);A.B b=a.new B();System.out.println(a.outStr+b.inStr);class A String outStr;public A(String s) outStr
2、=s;public class B public String inStr=“bbbbb“; A) aaaaa B)ababa C) bbbbb D) aaaaabbbbb 2、当某一线程正处于休眠状态,而另一个线程用 Thread 类中的 interrupt() 方法中断它时,抛出的异常类型是( ) 。A) IOException B) RuntimeExceptionC) InterruptedException D) ClassNotFoundException 3、以下是应用程序中定义的静态方法 printBinary,若在其 main 方法中有方法调用语句 printBinary(2
3、),则输出的结果是 ( )。static void printBinary(int i) System.out.print(i + “的 2 进制数表示为:t“);for(int j = 31; j =0; j-)if(1 j) elseSystem.out.print(“0“);System.out.println();/换行第 2 页 共 10 页A) 00000000000000000000000000000001 B) 00000000000000000000000000000010 C) 00000000000000000000000000001111 D) 000000000000
4、00000000000000000000 6、下面的程序段的功能是( )。File file1=new File(“d:xxxyyyzzz“);file1.mkdirs();A)在当前目录下生成子目录:xxxyyyzzz B)生成目录: e:xxxyyyzzz C)在当前目录下生成文件 xxx.yyy.zzz D)以上说法都不对 7、下面的程序编译运行后输出的结果是( )。public class Test public static void main(String args) X a=new X( ) public void showX() System.out.println(a*b);
5、a.showX();class X int a=5,b=3;public void showX() System.out.println(a+b); A) 15 B) 8 C) 5 D) 3 8、应用程序的 main 方法中有以下语句,则输出的结果是 ( )。String s=“xxxxxxxxxxxxxxx#123#456#zzzzz“;int n=s.indexOf(“#“);int k=s.indexOf(“#“,n+1);String s2=s.substring(n+1,k);System.out.println(s2);A)123456 B)123 C) xxxxxxxxxxxxx
6、xx D) zzzzz 9、关于下面的程序 Test.java 说法正确的是( )。public class Test String x=“1“; int y;public static void main(String args) int z=2; System.out.println(x+y+z); 第 3 页 共 10 页A)3 B)102 C) 12 D)程序有编译错误10、应用程序的 main 方法中有以下语句,则输出的结果是 ( )。double x=8765.12345;DecimalFormat form1 = new DecimalFormat(“0000.00“);Syst
7、em.out.println(“x=“+form1.format(x); A)x=8765.12 B)x=8765.12345C)x=8765.1 D)x=8765.0 11、应用程序的 main 方法中有以下语句,则输出的结果是 ( )。int b=1, 1, 1, 2,2, 3;int sum=0;for(int i=0;ib.length;i+) for(int j=0;jbi.length;j+) sum+=bij; System.out.println(“sum=“+sum);A) 10 B)6 C) 9 D) 13 12、下面的程序段执行后输出的结果是( )。String s=“T
8、est.java“;boolean b=s.startsWith(“test“); System.out.print(b); boolean b1=s.endsWith(“java“);System.out.println(b+“ “+b1);A) true true B) true false C) false true D) false false 13、应用程序的 main 方法中有以下语句,则执行后输出的结果是 ( )。int x=125,21,5,168,98;int min=x0;for(int i=1;ix.length;i+)if(ximin)min=xi;System.out
9、.println(min);A) 125 B) 5 C) 98 D) 168 15、下面程序段执行后 b 的值是( )。String str = “java“;boolean b = str instanceof Object; A) 0 B) true C) 1 D) false16、以下关于 java 异常说法不正确的是( ) 。A)Throwable 类是 Java 语言中 Error 类和 Exception 类的父类。B)当异常对象是 Exception 类(或其子类)的实例时,能通过 Java 虚拟机或者 throw 语句抛出该异常对象,并能通过 trycatchfinally 处
10、理。C)如果只用一个 catch 块捕捉多个异常对象,则 catch 子句中的参数类型应是所有异常对象的父类。D)以上说法都不对。17、应用程序 Test.java 的源程序如下,在命令行键入:第 4 页 共 10 页java Test aaa bb cc ddd eeeee则输出的结果是 ( )。public class Test public static void main(String args) int k1=args.length;int k2=args2.length(); System.out.print(k1+“ “+k2); A)3 2 B)5 2 C) 5 3 D) 5
11、5 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=“ABCDE“;byte b=s.getBytes();FileOutputStream file=new FileOutputStream(“test.txt“,true);file.wr
12、ite(b); file.close();catch(IOException e) System.out.println(e.toString();A) ABCABC B) ABCDE C)Test D) ABCDE ABCDE ABCDE 二、多选题(本大题共 10 个小题,每小题 2 分,共 20 分)得分 评阅人21、下面哪些关键字能用来控制对类成员的访问( )?A)public B)protected C)private D)default 22、阅读、编译、运行下面的程序,正确的选项是( ).public class Test public static void main (Str
13、ing args)Test a=new Test();a.method(8);a.method(8f);void method(double i) 第 5 页 共 10 页System.out.println(“double: “+i);void method(int i) System.out.println(“int: “+i);A)程序有编译错误,因为两个 method()方法必须定义为静态(static )的。B)程序可以编译运行,输出结果为:int: 8double: 8.0C)程序可以编译运行,输出结果为:int: 8float: 8.0D) 程序中定义的两个参数不同的 metho
14、d 方法称为方法重栽。 23、下面关于 Java 中异常处理 try 块的说法正确的是 ( )?A) try 块后通常应有一个 catch 块,用来处理 try 块中抛出的异常。 B) catch 块后必须有 finally 块。C)可能抛出异常的方法调用应放在 try 块中。 D)对抛出的异常的处理必须放在 try 块中24、线程对象的生命周期中,通常经历下面哪些状态( ) 。A)新建 B)运行 C)就绪 D)死亡 25、定义如下的二维数组 b,下面的说法正确的是( )。int b=1, 2, 3, 4, 5 ,6, 7, 8;A)b.length 的值是 3。 B)b1.length 的值
15、是 3。C)b11的值是 5。 D) 二维数组 b 的第一行有 3 个元素 26、类 B 是一个抽象类,类 C 是类 B 的非抽象子类,下列创建对象 x1 的语句中正确的是( )。A)B x1= new B( ); B) B x1=new C( ); C)C x1=new C( ); D) C x1=new B( );27、关于下面的程序的说法正确的是() 。1: public class Test extends Thread 2: String name;3: public Test(String s)4: name=s;5: 6: public static void main (Str
16、ing args) 7: Test thread1=new Test(“xxx“);8: Test thread2=new Test(“yyy“);9: thread1.start();10: thread2.start();11: 12: public void run () 13: System.out.print(name);14: 第 6 页 共 10 页15: A)类 Test 是线程类 Thread 的子类。B)程序第 7、8 行分别创建两个线程对象 thread1 和 thread2。 C)程序第 9、10 行的方法调用的功能是分别启动两个线程对象 thread1 和thread
17、2。 D)程序编译运行后输出结果是:xxxyyy。29、下面关于进程、线程的说法正确的是( )。A)进程是程序的一次动态执行过程。一个进程在其执行过程中,可以产生多个线程多线程,形成多条执行线索。B)线程是比进程更小的执行单位,是在一个进程中独立的控制流,即程序内部的控制流。线程本身不能自动运行,栖身于某个进程之中,由进程启动执行。C)Java 多线程的运行与平台相关。D)对于单处理器系统,多个线程分时间片获取 CPU 或其他系统资源来运行。对于多处理器系统,线程可以分配到多个处理器中,从而真正的并发执行多任务。30、下面关于外部类和内部类成员的相互访问的规则中,正确的选项是( )。A)内部类
18、可以直接访问外部类的成员。 B)外部类可以直接访问内部类的成员C)外部类不能访问内部类的成员。 D)外部类可通过创建内部类的实例来访问内部类的成员。三、填空题(本大题共 5 个小题,每小题 4 分,共 20 分)得分 评阅人31、根据程序中的注释,将下面的应用程序补充完整。public class A public static void main (String args) A a=new B( );a.test();void test() System.out.print (“A“);class B _(1)_ Avoid test() _(2)_;/调用父类的同名方法System.out
19、.println(“B“);33、下面的程序的功能是从 136 的整数中随机选取 7 个数:第 1 次随机选择136 中的一个数,第 2 次从剩下的 35 个数(第 1 次选中的数不包括其中)中第 7 页 共 10 页随机选择一个数,,重复这个过程,直到选中 7 个整数。请完成程序填空。import java.util.*;public class Select7From36 public static void main(String args) Random rd= new Random();ArrayList allNum=new ArrayList();/创建有 7 个元素的 Inte
20、ger 数组Integer result=_(1)_;int x;for(int i=1;i=36;i+)allNum.add(new Integer(i);for(int i=0;i=6;i+)x=_(2)_;resulti=(Integer)allNum.get(x);allNum.remove(x);for(int i=0;iresult.length;i+)System.out.print(resulti+“ “); 34、假定一个英文表示的地址格式要求是:数字号码(至少 1 个),然后是一个或多个空格隔开,然后是一个单词(至少两个字母)表示的地名,或用空格隔开的两个单词(至少两个字母
21、)表示的地名,例如: 5 waiganxijie Beijing,就是符合要求的地址格式。下面应用程序的 main 方法中使用 JOptionPane 类的文本输入对话框输入地址,通过正则字符串和字符串类的 matches()方法判断是否为地址格式要求的地址。请完成程序填空。import javax.swing.*;import java.util.regex.Pattern;public class UseMatchesMethodpublic static void main( String args ) String regex=_(1)_;String input=JOptionPan
22、e.showInputDialog(“请输入地址“); if(_(2)_)System.out.println(input+“是有效的地址!“); elseSystem.out.println(input+“不是有效的地址!“); 35、下面是一个实现了 Runnable 接口的小程序,程序通过多线程实现了以下功能:从 1 开始,每个两秒钟显示下一个连续的自然数,显示到直到 10 后结束。第 8 页 共 10 页请根完成程序填空。import java.awt.*;import javax.swing.*;public class Test extends JApplet _(1)_ Runn
23、able int counter=0;Thread t;public void init() t=_(2)_; /创建线程对象t.start();public void run() while( counter10 ) counter+;try Thread.sleep(2000); catch ( InterruptedException e ) repaint();public void paint( Graphics g ) setBackground(Color.black);g.setColor(Color.green);g.setFont(new Font(“Times New R
24、oman“,Font.BOLD,35);g.drawString( String.valueOf(counter),60+counter*20,60 ); public void update(Graphics g)paint(g);四、程序阅读题(本大题共 4 个小题,每小题 6 分,共 24 分)得分 评阅人36、阅读下面的程序代码,并回答问题(问 3 分,问 3 分,共 6 分)。String s1=new String(“abcde“);String s2=new String(“abcde“); boolean b1=s1.equals(s2);boolean b2=s1=s2; S
25、ystem.out.print(b1+“ “+b2); 程序段执行后,在命令行的输出结果如何?解释输出(1)的结果的原因?37、阅读下面的程序,并回答问题(问 3 分, 问 3 分,共 6 分)。import java.io.*;public class Test 第 9 页 共 10 页public static void main(String args) throws IOException BufferedReader buf=new BufferedReader(new InputStreamReader(System.in); while(true) String str=buf.
26、readLine();if(str.equals(“quit“)break;int x=Integer.parseInt(str);System.out.println(x*x); 编译运行上面的程序:从键盘输入 10,回车后输出的结果如何?从键盘输入 exit,回车后程序能正确执行吗?为什么?38、写出下面的程序编译、运行后的结果(6 分)。public class Testpublic static void main(String args) new Student(“Tom“,m,90,88);new Student(“Jack“,m,66,89);new Student(“Mary“
27、,f,76,86);System.out.println(“nametsextchinesetenglish“);Student.print();class Student protected String name;protected char sex;protected int chinese;protected int english;protected Student next;static Student list;Student(String name, char sex, int chinese,int english) this.name=name;this.sex=sex;t
28、his.chinese=chinese;this.english=english;this.next=list;list=this;static void print() Student friend=list;if(friend=null)System.out.println(“The list is empty.“);else doSystem.out.println(friend.toString();friend=friend.next;while(friend!=null);public String toString() return new String(name+“t“+sex
29、+“t“+chinese+“t“+english);第 10 页 共 10 页五、编程题(本大题共 3 个小题,40 小题 4 分,41、42 小题各 6 分,共 16分)得分 评阅人40、请定义一个名为 Card 的扑克牌类,该类有两个 private 访问权限的字符串变量 face 和 suit:face 描述一张牌的牌面值(如:“Ace“, “Deuce“, “Three“, “Four“, “Five“, “Six“, “Seven“, “Eight“, “Nine“, “Ten“, “Jack“, “Queen“, “King“) ;suit 描述一张牌的花色(如:“Hearts“,
30、 “Diamonds“, “Clubs“, “Spades“) 。定义Card 类中的 public 访问权限的构造方法,为类中的变量赋值;定义 protected 访问权限的方法 getFace(),得到扑克牌的牌面值; 定义 protected 访问权限的方法getSuit(),得到扑克牌的花色; 定义方法 toString(),返回表示扑克牌的花色和牌面值字符串(如“Ace of Hearts ”、 “Ten of Clubs”等) 。41、程序中已定义如下字符串数组 faces,用来表示牌面面值:String faces= “Ace“, “Deuce“, “Three“,“Four“,
31、 “Five“, “Six“, “Seven“, “Eight“,“Nine“, “Ten“, “Jack“, “Queen“, “King“ ;并已定义名为 hand1 的 Card 数组如下,存放一幅牌(共 5 张):Card hand1=new Card5;设已发了一幅牌,并存放在 hand1 数组中,为了统计该幅牌(54 张牌中的任意5 张)的每个面值的牌各有多少(因花色不同,不同面值的牌可能有0、1、2、3、4 张) ,程序中已定义一个整型数组:int numbers1=new int13 ;存放 5 张牌中 13 个不同面值中的张数。请编写方法:void totalHand(),方法的功能是统计一幅牌中不同面值的牌的张数,结果保存在整型数组 numbers1 中。