
天津广播电视大学 2009--2010年度 第一学期 《Java技术》课程 期末考试 题号 一 二 三 四 五 六 总分 分数 专业 姓名 一、选择(每小题2分,10小题,共30分) 1下面描述中,符合结构化程序设计风格的是 A使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B、模块只有一个入口,可以有多个出口 C、注重提高程序的执行效率 D、不使用goto语句 2在下面附属类方法中的下划线处,应填入的正确参数是 public void writeData(throws IOException GregoranCalendar calendar=new GregorianCalendar() calendar.setTime(hireDay); out.println(name+"" +salary+"]" +calendar.get(Calendar.YEAR)+"]" +(calendar.get(Calendar.MONTH)+1)+"" A、Employee[]e B、"employee.dat" C、PrintWriter out D、BufferedWriter 3在匹配器(Matcher)类中,用于输入字符串与模式串比较的方法是 A static boolean matches()B.boolean matcher.find() C、int matcher..start() D、int matcher.end) 4下列内部类的正确用途是 。 btnn.addActionListener(new ActionListener() 注册监听器 public void actionPerformed(ActionEvent event) String s=input.getText(); output.setText("Hello"+s+",Welcome You!";
1 天津广播电视大学 2009---2010 年度 第一学期 《Java 技术》课程 期末考试 题号 一 二 三 四 五 六 总分 分数 专业 姓名 一 、选择 (每小题 2 分,10 小题,共 30 分) 1 下面描述中,符合结构化程序设计风格的是_____。 A 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B、模块只有一个入口,可以有多个出口 C、注重提高程序的执行效率 D、不使用 goto 语句 2 在下面附属类方法中的下划线处,应填入的正确参数是 _____。 public void writeData( throws IOException { GregoranCalendar calendar=new GregorianCalendar() calendar.setTime(hireDay); out.println(name+"|" +salary+"|" +calendar.get(Calendar.YEAR)+"|" +(calendar.get(Calendar.MONTH)+1)+"|" A、Employee[] e B、"employee.dat" C、PrintWriter out D、BufferedWriter 3 在匹配器(Matcher)类中,用于输入字符串与模式串比较的方法是 _____。 A、static boolean matches() B、boolean matcher.find() C、int matcher.start() D、int matcher.end() 4 下列内部类的正确用途是 _____ 。 btnn.addActionListener(new ActionListener() //注册监听器 { public void actionPerformed(ActionEvent event) { String s=input.getText(); output.setText("Hello"+s+",Welcome You!";

) A、用于访问外部类的数据B、用于进行事件处理 C、隐藏起来不被同一包中的其他类所见D、生成事件适配器 5下列属于正则表达式的是 A、一个数组 B、一组二进制数据 C、一个字符串 D、一个公式 6下列关于Applet的叙述中,错误的是 A、Applet是Java类,所以可以由JDK中的解释器java.exe直接解释运行 B、Applet应该定义为java.applet.Applet类或javax.swing.JApplet类的子类 C、Applet与Application的主要区别在执行方式上 D、通过在HTML文件中采用标记可以向Applet传递参数 7java中对Applet设置了严格的安全限制。下列关于Applet在Java2中安全限制叙述正确的 A、根本无法解除B、只有部分限制可以解除,而其它限制无法解除 C、可以在安全策略的控制下解除D、已经缺省地全部解除 8下列数组a中,版本较新的能在程序运行时动态调整大小的是 A、int a[]B、String[]a C、a-new ArrayList()D、a=new Array() 9调用线程的下列方法,不会改变该线程的生命周期中状态的方法是 A、yield()B、wait() C、sleep()D、isAlive() 10下列叙述中,错误的是。 A、接口与类的层次无关B、通过接口说明类所实现的方法 C、通过接口可了解对象的交互界面D、接口与存储空间有关 11.用于定义类成员的访问控制权的一组关键字是()。() A)class,float,double,public B)float,boolean,int,long C)char,extends,float,double D)public,private,protected 12.不能构成循环的语句是()。 A)for语句 B)while语句 C)switch语句 D)do_while语句 13.下列程序段执行后b3的结果是()。 boolean bl=true,b2,b3: b3=b1?b1:b2; A)0 B)1 C)true D)false
2 } }) A、用于访问外部类的数据 B、用于进行事件处理 C、隐藏起来不被同一包中的其他类所见 D、生成事件适配器 5 下列属于正则表达式的是______。 A、一个数组 B、一组二进制数据 C、一个字符串 D、一个公式 6 下列关于 Applet 的叙述中,错误的是 _____。 A、Applet 是 Java 类,所以可以由 JDK 中的解释器 java.exe 直接解释运 行 B、Applet 应该定义为 java.applet.Applet 类或 javax.swing.JApplet 类的子类 C、Applet 与 Application 的主要区别在执行方式上 D、通过在 HTML 文件中采用标记可以向 Applet 传递参数 7 java 中对 Applet 设置了严格的安全限制。下列关于 Applet 在 Java2 中安全限制叙述正确的 是 _____。 A、根本无法解除 B、只有部分限制可以解除,而其它限制无法解除 C、可以在安全策略的控制下解除 D、已经缺省地全部解除 8 下列数组 a 中,版本较新的能在程序运行时动态调整大小的是 _____。 A、int a[] B、String[] a C、a=new ArrayList() D、a=new Array() 9 调用线程的下列方法,不会改变该线程的生命周期中状态的方法是 _____。 A、yield() B、wait() C、sleep() D、isAlive() 10 下列叙述中,错误的是 _____。 A、接口与类的层次无关 B、通过接口说明类所实现的方法 C、通过接口可了解对象的交互界面 D、接口与存储空间有关 11. 用于定义类成员的访问控制权的一组关键字是( )。() A) class, float, double, public B) float, boolean, int, long C) char, extends, float, double D) public, private, protected 12. 不能构成循环的语句是( )。 A) for 语句 B) while 语句 C) switch 语句 D) do__while 语句 13. 下列程序段执行后 b3 的结果是( )。 boolean b1=true, b2, b3; b3= b1 ? b1 : b2; A) 0 B) 1 C) true D) false

14.设有定义inti=123;1ongj456;下面赋值不正确的语句是()。 A)j=i; B)j=(long)i; C)i=(int)j; D)i=j; 15.阅读下列代码后 public class Person (public static void main(String args[] int arr=new int[10]: System.out.println(arr[1]);)) 正确的说法是() A.编译时将产生错误B.编译时正确,运行时将产生错误C.输出零D.输出空 二、判断改错(每小题1分,10小题,共10分) 【】1.一个类的定义包括定义类头和定义类体两个部分。 【】2.一个程序里可以有多个父类,也可以有多个主类 【】3.一个子类可以重新定义从父类那里继承来的同名方法,而且允许它们有不同 的返回值。 【】4.抽象方法只能存在于抽象类中。 【 】5.在父类中声明为final的方法,也可以在其子类中被重新定义(覆盖)。 【】6.接口中所有方法均为抽象方法。 【】7.False是合法的Java标识符。 【 】8.类头定义包含的四个部分分别为:访问控制修饰符、类名说明、父类名说明 和接口名的说明,它们中的任何一个都是不能缺少的。 【】9.在Applet的坐标系中,(O,O)代表输出窗口左上角的象素点。 【】l0.应用程序一定要有main()方法,小程序一定要继承于Applet类 三、多选(每小题2分,10小题,共20分) 1.下面哪个方法可以在任何时候被任何线程调用?() A notify() B wait() C notifyAll() D sleep() E.yield() F.synchronized(this) 2.构造BufferedInputStream的合适参数是哪个?() A BufferedInputStream B BufferedOutputStream C FileInputStream D FileOuterStream E.File 3.下列说法正确的是() A java.lang.Clonable是类 B java.lang.Runnable是接口 C Double对象在java.lang包中 D Double a=l.0是正确的java语句
3 14. 设有定义 int i=123; long j=456; 下面赋值不正确的语句是( )。 A) j=i; B) j=(long)i; C) i=(int)j; D) i=j; 15. 阅读下列代码后 public class Person {public static void main(String args[ ]) {int arr=new int[10]; System.out.println(arr[1]);}} 正确的说法是( ) A. 编译时将产生错误 B. 编译时正确,运行时将产生错误 C. 输出零 D. 输出空 二、判断改错 (每小题 1 分,10 小题,共 10 分) 【 】 1. 一个类的定义包括定义类头和定义类体两个部分。 【 】 2. 一个程序里可以有多个父类,也可以有多个主类。 【 】 3. 一个子类可以重新定义从父类那里继承来的同名方法,而且允许它们有不同 的返回值。 【 】 4. 抽象方法只能存在于抽象类中。 【 】 5. 在父类中声明为 final 的方法,也可以在其子类中被重新定义(覆盖)。 【 】 6. 接口中所有方法均为抽象方法。 【 】 7. False 是合法的 Java 标识符。 【 】 8. 类头定义包含的四个部分分别为:访问控制修饰符、类名说明、父类名说明 和接口名的说明,它们中的任何一个都是不能缺少的。 【 】 9. 在 Applet 的坐标系中,(0,0) 代表输出窗口左上角的象素点。 【 】 10. 应用程序一定要有 main()方法,小程序一定要继承于 Applet 类 三 、多选 (每小题 2 分,10 小题,共 20 分) 1.下面哪个方法可以在任何时候被任何线程调用? () A notify() B wait() C notifyAll() D sleep() E.yield() F.synchronized(this) 2.构造 BufferedInputStream 的合适参数是哪个? () A BufferedInputStream B BufferedOutputStream C FileInputStream D FileOuterStream E. File 3.下列说法正确的是() A java.lang.Clonable 是类 B java.lang.Runnable 是接口 C Double 对象在 java.lang 包中 D Double a=1.0 是正确的 java 语句

4.定义一个类名为"MyClass.java"的类,并且该类可被一个工程中的所有类访问,那么该类 的正确声明应为:() A private class MyClass extends Object B class MyClass extends Object C public class MyClass D public class MyClass extends Object 5.指出下列哪个方法与方法public void add(inta)}为合理的重载方法()。 A public int add(int a) B public void add(long a) C public void add(int a,int b) D public void add(float a) 6下列哪个选项是合法的标识符? A)123 B)_name C)class D)Ifirst > 下列哪个修饰符不可以使在一个类中定义的成员变量只能被同一包中的类访问? A)private B)无修饰符 C)public D)protected 8顺序执行下列程序语句后,则b的值是 String a="Hello": String b=a.substring (0,2); A)Hello B)hello C)Hel D)null 9在oneMethod()方法运行正常的情况下,程序段将输出什么? public void test ( { try oneMethod () System.out.println ("condition 1"); }catch (ArrayIndexOutOfBoundsException e) { System.out.println ("condition 2"); catch (Exception e) { System.out.println ("condition 3"); finally System.out.println ("finally"); } } A)condition 1 B)condition 2
4 4.定义一个类名为"MyClass.java"的类,并且该类可被一个工程中的所有类访问,那么该类 的正确声明应为:() A private class MyClass extends Object B class MyClass extends Object C public class MyClass D public class MyClass extends Object 5.指出下列哪个方法与方法 public void add(int a){}为合理的重载方法()。 A public int add(int a) B public void add(long a) C public void add(int a,int b) D public void add(float a) 6 下列哪个选项是合法的标识符? A)123 B)_name C)class D)1first 7 下列哪个修饰符不可以使在一个类中定义的成员变量只能被同一包中的类访问? A)private B)无修饰符 C)public D)protected 8 顺序执行下列程序语句后,则 b 的值是 String a="Hello"; String b=a.substring(0,2); A)Hello B)hello C)Hel D)null 9 在 oneMethod()方法运行正常的情况下,程序段将输出什么? public void test() { try { oneMethod(); System.out.println("condition 1"); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("condition 2"); } catch(Exception e) { System.out.println("condition 3"); } finally { System.out.println("finally"); } } A)condition 1 B)condition 2

C)condition 3 D)condition 1 finally 10下列常见的系统定义的异常中,哪个是输入、输出异常? A)ClassNotFoundException B)IOException C)FileNotFoundException D)UnknownHostException 四、填空题(每空2分,本题共10分) l.Java语言源程序文件的扩展名是 一,经过编译后生成的文件的扩展名 是一。 2.Java语言整型数据类型包括:一、短整型、 和 五、简答(每小题5分,4小题,20分) 1谈谈final,finally的区别。 2多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 3编程题:写一个满足Singleton模式的类出来 5
5 C)condition 3 D)condition 1 finally 10 下列常见的系统定义的异常中,哪个是输入、输出异常? A)ClassNotFoundException B)IOException C)FileNotFoundException D)UnknownHostException 四、填空题(每空 2 分,本题共 10 分) 1.Java 语言源程序文件的扩展名是 ,经过编译后生成的文件的扩展名 是 。 2.Java 语言整型数据类型包括: 、短整型、 和 。 五、简答(每小题 5 分,4 小题,20 分) 1 谈谈 final, finally 的区别。 2 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 3 编程题::写一个满足 Singleton 模式的类出来

4当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其 它方法? 六、编程题(10分) 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程 序。以下程序使用内部类实现线程,对)增减的时候没有考虑顺序问题。 参考答案 一、选择 1-5:ACABD 6-10:ACCDD 11-15:DCCDA 二、判断改错 1-5:TFFTF 6-10:TTFTT 三、多选(每小题2分,10小题,共20分) 1 DEF 2 AC 3 BC 4 CD CD 6 ABD > BCD 8 ACD
6 4 当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其 它方法? 六、编程题(10 分) 设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。写出程 序。以下程序使用内部类实现线程,对 j 增减的时候没有考虑顺序问题。 参考答案 一、选择 1-5: ACABD 6-10: ACCDD 11-15:DCCDA 二、判断改错 1-5: TFFTF 6-10: TTFTT 三 、多选 (每小题 2 分,10 小题,共 20 分) 1 DEF 2 AC 3 BC 4 CD 5 CD 6 ABD 7 BCD 8 ACD

9 ACD 10 ACD 四填空 1..java 字节码 2.字节型 整型 长整型 五、简答 1 final是修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不 能作为父类被继承。因此一个类不能既被声明为abstract,.又被声明为final。将变量或方法 声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初 值,而在以后的引用中只能读取,不可修改。被声明为fial的方法也同样只能使用,不能 重载。 Finally是在异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么 相匹配的catch子句就会执行,然后控制就会进入finally块如果有的话),只要有finally 语句块,无论程序如何运行,它都必然被执行到。 2多线程有三种实现方法,分别为: ①实现Runnable接口,覆盖Run(O方法。 ②继承Thread,覆盖Run()方法。 ③继承Timer Task,覆盖Run()方法。 同步的实现是在方法前加synchronized,在调用wait)和notify(O。 3 public class SingletonTest private static SingletonTest sp; private SingletonTest(){ public static SingletonTest getInstance() { if (sp=null) sp=new SingletonTest();) return sp; } 4不可以。synchronized方法都必须获得调用该方法的类实例的锁方能执行,否则所属 线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线 程才能获得该锁,重新进入可执行状态。 六、应用题 public class ThreadTestl{ private int j; public static void main(String args[]){ ThreadTest1 tt=new ThreadTest1(); Inc inc=tt.new Inc(); Decdec=tt.new Dec(); for(int i=0;i
7 9 ACD 10 ACD 四 填空 1..java 字节码 2.字节型 整型 长整型 五、简答 1 final 是修饰符(关键字)如果一个类被声明为 final,意味着它不能再派生出新的子类,不 能作为父类被继承。因此一个类不能既被声明为 abstract,又被声明为 final。将变量或方法 声明为 final,可以保证它们在使用中不被改变。被声明为 final 的变量必须在声明时给定初 值,而在以后的引用中只能读取,不可修改。被声明为 final 的方法也同样只能使用,不能 重载。 Finally 是在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么 相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话),只要有 finally 语句块,无论程序如何运行,它都必然被执行到。 2 多线程有三种实现方法,分别为: ① 实现 Runnable 接口,覆盖 Run()方法。 ② 继承 Thread,覆盖 Run()方法。 ③ 继承 TimerTask,覆盖 Run()方法。 同步的实现是在方法前加 synchronized,在调用 wait()和 notify()。 3 public class SingletonTest { private static SingletonTest sp; private SingletonTest() {} public static SingletonTest getInstance() { if (sp==null) { sp=new SingletonTest(); } return sp; } 4 不可以。synchronized 方法都必须获得调用该方法的类实例的锁方能执行,否则所属 线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放,此后被阻塞的线 程才能获得该锁,重新进入可执行状态。 六、应用题 public class ThreadTest1{ private int j; public static void main(String args[]){ ThreadTest1 tt=new ThreadTest1(); Inc inc=tt.new Inc(); Dec dec=tt.new Dec(); for(int i=0;i<2;i++){ Thread t=new Thread(inc); t.start(); t=new Thread(dec);

t.start(); } private synchronized void inc(){ j++; System.out.println(Thread.currentThread().getName()+"-inc:"+j); } private synchronized void dec(){ j-; System.out.println(Thread.currentThread().getName()+"-dec:"+j); class Inc implements Runnable{ public void run(){ for(int i=0;i<100;i++){ inc(); } } class Dec implements Runnable{ public void run(){ for(int i=0;i<100;i++){ dec(; } } }
8 t.start(); } } private synchronized void inc(){ j++; System.out.println(Thread.currentThread().getName()+"-inc:"+j); } private synchronized void dec(){ j--; System.out.println(Thread.currentThread().getName()+"-dec:"+j); } class Inc implements Runnable{ public void run(){ for(int i=0;i<100;i++){ inc(); } } } class Dec implements Runnable{ public void run(){ for(int i=0;i<100;i++){ dec(); } } } }