1、Java 面向对象程序设计复习题一、选择题1、下列哪个是 Java中的关键字( C )。A、run B、Integer C、default D、implement2、下面关于 Java.applet.Applet 和其祖先类的描述语句哪个不对( B )。A、Applet 是 Container 的一种 B、Applet 是 Window 的一种C、Applet 是 Component 的一种 D、Applet 是 Panel 的一种3、下列类 DataOutputStream 的构造方法正确的是( A )。A、new dataOutputStream(new FileOutputStream(
2、 “out.txt ”);B、new dataOutputStream(“out.txt”);C、new dataOutputStream(new writer( “out.txt ”);D、new dataOutputStream(new FileWriter( “out.txt ”);4、在 switch(表达式)语句中,表达式的类型不能为( C )。A、byte B、char C、long D、int5、在接口 MouseMotionListener 中方法正确的是( A )。A、Public void mouseDragged(MouseEvent)B、Public boolean m
3、ouseDragged(MouseEvent)C、Public void mouseDragged(MouseMotionEvent)D、Public boolean MouseDragged(MouseMotionEvent)6、下面是一些异常类的层次关系Java.lang.ExceptionJava.lang.RuntimeExceptionJava.lang.IndexOutOfBoundsExceptionJava.lang.ArrayIndexOutOfBoundsExceptionJava.lang.StringIndexOutOfBoundsException假设有一个方法 X,
4、能够抛出两个异常, Array Index 和 String Index 异常,假定方法 X 中没有 trycatch 语句,下面哪个答案是正确的。 ( B )A、方法 X 应该声明抛弃 ArrayIndexOutOfBoundsException 和 StringIndexOutOfBoundsException 。B、如果调用 X 的方法捕获 IndexOutOfBoundsException ,则 ArrayIndexOutOfBoundsException 和 StringIndexOutOfBoundsException 都可以被捕获。C、如果方法 X 声明抛弃 IndexOutOf
5、BoundsException ,则调用 X 的方法必须用 Try-catch语句捕获。D、方法 X 不能声明抛弃异常。7、现有一变量声明为 boolean aa;下面赋值语句中正确的是 ( D )。A、aa=0 B、aa=True C、aa=true D、aa=false8、某类 Example 的 main() 方法参数为 args,当输入数据 Java Example cat 时,args0的值为( A )。A、cat B、Java C、example D、null9、String s1=new String( “Java”);String s2=new String(s1) 则下列哪个
6、说法是正确的( C )。A、表达式 s1=s2 为真B、s1 和 s2 是同一个对象C、表达式 s1.equals(s2)为真D、以上均不对10、类定义如下class Foopublic static void main(String args)String s;System.out.println(s=+s);则下列结论正确的是( C )。A、有输出结果,且为空 B、没有输出结果C、编译错误 D、有输出结果,且不为空11、下列哪个不是 Java的保留字( D )。A、float B、class C、extends D、virtual12、下列符号中不能作为 Java 标识符的是 ( D )。
7、A、abc B、$str1 C、_pore D、45six13、方法 methodA 定义如下:returnType methodA(byte x,double y)return (short)x/y*2;则返回值 returnType 为( C )。A、byte B、double C、short D、int14、如果 float f=4.2F;Float g=new Float(4.2F); Double d=new Double(4.2); 则下列选项正确的是( B )。A、f=g B、f=g.floatValue() C、d=f D、d.equals(f)15、下列二维数组定义中错误的是
8、( A )。A、int a=new int;B、int a=new int1010;C、int a=new int1010;D、int a=new int1010;16、关于下列语句哪个答案是正确的( D )。System.out.println(4|7);A、4 B、5 C、6 D、717、下面哪一个 AWT 组件可以有菜单栏 MenuBar( A ) 。A、Java.awt.FrameB、Java.awt.WindowC、Java.awt.AppletD、Java.awt.Panel18、下列哪个方法用于创建并开始一个新的线程( B )。A、run();B、start();C、execut
9、e();D、run(Runnable r);19、如果有 Boolean a=new Boolean( “yes”),则 a.booleanValue()值为( D )。A、yes B、“yes” C、true D、false20、以下类 DataOutputStream 的构造方法正确的是( C )。A、new dataInputStream(“in.txt ”);B、new dataInputStream(new file( “in.txt”);C、new dataInputStream(new FileInputStream( “in.txt ”);D、new dataInputStre
10、am(new FileWriter( “in.txt ”);21、编译 Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B ) 。A、.Java B、.class C、.html D、.exe22、设 x = 1 , y = 2 , z = 3 ,则表达式 y z /x 的值是 ( A )。A、3 B、3.5 C、4 D、523、在 Applet 表面输出文字时,可以选择不同的颜色,但是忘记了设置颜色的方法,应该首先在哪个类里面寻找( D )。A、Java .awt.AppletB、Java.awt.PanelC、Java.applet.Appl
11、etD、Java.awt.Component24、类 Cycle 的 main() 方法为:public static void main(String args)System.out.println(args0);则运行时如果命令行语句为 Java Cycle one two three,则输出结果为( B )。A、Cycle B、one C、two D、three25、下面哪一个是 Thread 类中的静态方法 ( D )。A、start() B、stop() C、run() D、sleep(long m)26、关于下列语句哪个答案是正确的( A )。if(5&7&5|2)System.o
12、ut.println( “true”);A、不能编译成功 B、可以编译成功,输出 trueC、可以编译成功,但无输出 D、以上均不对27、声明公用的 abstract 方法的正确格式是( C )。A、public abstract void add() B、public abstract add();C、public abstract void add();D、public virtual add();28、下列程序结果正确的是( B )。public class Test public static void main (String args ) Ad a1=new Ad();System
13、.out.println(a1.add(1);Ad a2=new Ad();System.out.println(a2.add(2);class Adstatic int total = 10;public int add(int i)total=total+i;return total;A、11,12 B、11,13 C、11,11 D、12,1229、基于 Java.awt.Frame 的一个程序中包含一个 Panel,Panel 其中包含一个 Label,在 Frame和 Panel 中分别有下面的一些语句 ,/Frame 里面的语句setFont( new Font( Serif, F
14、ont. ITALIC, 18 );setBackground( Color. cyan );/Panel 中的语句setBackground( Color. white );setForeground( Color. magenta );请问 Label 用什么颜色和字体显示( A )。A 、Background=white;foreground=magenta;font=Serif Italic style,18 pointB、Background=cyan;foreground=black;font=Serif Italic style,18 pointC、Background=cyan
15、;foreground=black;font=system default style for labelsD、Background=white;foreground=magenta;font=system default style for labels30、语句 for(int x=0,y=0;(y!=0)&(x4);x+) 的执行次数是( B )。A、无限次 B、一次也不执行 C、执行 4 次 D、执行 3 次二、判断题1、abstract 是抽象修饰符,可以用来修饰类及其属性和方法。 ( 对 )2、Java支持多线程机制。 ( 对 )3、一个 Java源程序文件中允许有多个公共类。 (
16、 错 )4、重载的方法可以通过它们的返回值类型的不同来区分。 ( 错 )5、子类要调用父类的方法,必须使用 super 关键字。( 错 )6、子类拥有的成员数目一定大于等于父类拥有的成员数目。 ( 错 )7、一个 catch 块也可以区分处理多个不同类型的异常,只要它们是该 catch 语句块异常参数的子类或其本身。 ( 对 )8、程序中一旦执行了 catch 语句块,则不会执行 finally 语句块。( 错 )9、新建一个 Frame 对象,则其将立即显示在屏幕上。 ( 错 )10、一个正在执行的线程使用 yield() 方法将处理器让给其它同优先级的其它线程。 ( 对 )11、Java
17、中的的字符使用的是 16 位的 Unicode 编码。 ( 对 )12、for 语句中的循环体不能为空。 ( 错 )13、Java 仅支持类间的单重继承。 ( 对 )14接口是由常量和抽象方法组成的特殊类。 ( 对 )15、构造函数的方法名可由编程人员任意命名。 ( 错 )16、使用静态属性必须以类名做前缀。 ( 错 )17、类的私有属性和私有方法可以被其子类访问。 ( 错 )18、使用了 FlowLayout 布局管理器,不能改变组件的高度。 ( 对 )19、Java.lang.RuntimeException 及其子类的异常可以不捕获。 ( 对 )20、当用户在 TextField 中改变
18、光标的位置时,会产生一个 TextEvent 事件。( 错 )31、Java程序是由若干类定义组成的,类定义包括定义类头和定义类体。 ( 对 )32、类 Class1 中的属性被 private 修饰符修饰为私有变量,所以方法不能访问它。 ( 错 )34、引用一个类的属性或调用其方法,必须以这个类的对象为前缀。 ( 错 )35、与未加访问控制符的缺省情况相比, public 和 protected 修饰符扩大了类及其属性和方法的被访问范围, private 修饰符则缩小了这种范围。 ( 对 )36、子类要调用父类的方法,必须使用 super 关键字。( 错 )37、因为 Java不支持多重继承
19、, 所以定义类时 implements 关键字后面只能说明一个接口名。( 错 )38、挂起、阻塞或等待的线程都能恢复执行,但停止的线程不能复生。 ( 对 )39、如果一个方法在运行过程中产生异常,则方法会终止,但整个应用不一定终止。 ( 对 )40、接口 Java.lang.runnable 中只有一个 run()方法。( 对 )三、程序阅读题1阅读下面的程序代码,并回答问题。String s1 = new String(abcde);String s2 = new String(abcde);boolean b1= s1.equals(s2);boolean b2 = s1 = = s2;S
20、ystem.out.print(b1+ +b2);(1)程序段执行后,在命令行的输出结果如何?(2)解释输出(1)的结果的原因?(1) true false(2 )equals方法比较两个字符串的内容是否相等;运算符“ =”判断两个对象是否指向同一个引用,即是否为同一个对象。2. 阅读下面的程序代码,并回答问题。import java.io.*;public class Test public static void main(String args) throws IOException BufferedReader buf=new BufferedReader(new InputStrea
21、mReader(System.in);while(true) String str = buf.readLine();if(str.equals(quit)break;int x=Integer.parseInt(str);System.out.println(x*x);编译运行上面的程序:(1)从键盘输入 10,回车后输出的结果如何?(2)从键盘输入 exit ,回车后程序能正确执行吗?为什么?(1)100(2)不能;因为方法 Integer.parseInt(str)不能将字符串“ exit”转化为整数,抛出异常。3. 阅读下面的程序代码import java.io.* ;public c
22、lass Testpublic static void main(String args )int i , s=0;int a = 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 ,90;for( i=0 ; ia.length;i+)if ( ai%3=0 )continue;s+=ai ;System.out.println(s=+s);程序执行后,在命令行的输出结果是什么?2704. 阅读下面的程序代码import java.util.*;public class Example9_14 public static void main(String args)
23、 String s=市话费 :28.89 元,长途话费 :128.87 元,上网费 :298 元。;String delim = 市话长途话上网费元 :,。;StringTokenizer fenxi=new StringTokenizer(s,delim);/ 用delim 中的字符的任意组合作为分隔标记double totalMoney=0;while(fenxi.hasMoreTokens() double money=Double.parseDouble(fenxi.nextToken();System.out.println(money);totalMoney += money;Sy
24、stem.out.println( 总费用: +totalMoney+ 元);程序执行后,在命令行的输出结果是什么?市话费 :28.89 元长途话费 :128.87 元,上网费 :298 元。总费用 :455.76 元5. 阅读下面的程序代码import java.util.*;class Student implements Comparable int english=0;String name;Student(int english,String name) this.name=name;this.english=english;public int compareTo(Object b
25、) Student st=(Student)b;return (this.english - st.english);public class Example13_8 public static void main(String args) TreeSet mytree=new TreeSet();Student st1,st2,st3,st4;st1=new Student(90, 赵一);st2=new Student(66, 钱二);st3=new Student(86, 孙三);st4=new Student(76, 李四);mytree.add(st1);mytree.add(st2
26、);mytree.add(st3);mytree.add(st4);Iterator te=mytree.iterator();while(te.hasNext() Student stu=te.next();System.out.println(+stu.name+ +stu.english);程序执行后,在命令行的输出结果是什么?钱二 66李四 76孙三 86赵一 906. 写出下面的程序编译、运行后的结果。public class Testpublic static void main(String args) new Student(Tom, m, 90, 88);new Studen
27、t(Jack, m, 66, 89);new Student(Mary, 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
28、english) this.name=name;this.sex=sex;this.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 toSt
29、ring() return new String(name+t+sex+t+chinese+t+english);7. 写出以下程序的功能。import java.io.*;public class TestFilepublic static void main(String args) throws ExceptionBufferedReader br = new BufferedReader(new InputStreamReader(System.in);BufferedWriter bw = new BufferedWr iter(new FileWriter( input.“txt)
30、;String s;while (true)System.out.print(请输入一个字符串: );System.out.flush();s=br.readLine();if (s.length()=0) break;bw.write(s);bw.newLine();bw.close();8. 阅读以下程序,写出输出结果。class Animal Animal() System.out.print (Animal ); public class Dog extends Animal Dog() System.out.print (Dog ); public static void main(
31、String args) Dog snoppy= new Dog(); 四、程序填空题1. 以下程序是一个算术测试小软件,用来训练小学生的算术能力。程序有 3个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确。ComputerFrame对象负责为算术题目提供视图,比如用户可以通过 ComputerFrame对象提供的 GUI 界面看到题目, 并通过该 GUI 界面给出题目的答案; MailClass 是软件的主类。程序运行效果如下图所示。仔细阅读程序代码,请按模板要求,在【代码】处填写合适的 Java程序代码。MainClass.javapublic cl
32、ass MainClass public static void main(String args) ComputerFrame frame;frame=new ComputerFrame();frame.setTitle( 算术测试 );frame.setBounds(100,100,650,180);ComputerFrame.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class ComputerFrame extends JFrame JMenuBar menubar;JMenu c
33、hoiceGrade; / 选择级别的菜单JMenuItem grade1,grade2;JTextField textOne,textTwo,textResult;JButton getProblem,giveAnwser;JLabel operatorLabel,message;Teacher teacherZhang;ComputerFrame() teacherZhang=new Teacher();teacherZhang.setMaxInteger(20); setLayout(【代码 1】_new FlowLayout()_ _); /设置 ComputerFrame 的布局为
34、FlowLayout 布局menubar = new JMenuBar();choiceGrade = new JMenu( 选择级别 );grade1 = new JMenuItem( 幼儿级别 );grade2 = new JMenuItem( 儿童级别 );grade1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) teacherZhang.setMaxInteger(10););grade2.addActionListener(new ActionListener()
35、public void actionPerformed(ActionEvent e) teacherZhang.setMaxInteger(50););choiceGrade.add(grade1);choiceGrade.add(grade2);menubar.add(choiceGrade);setJMenuBar(menubar);【代码 1】_ textOne=new JTextField(5);_ _/创建textOne,其可见字符长是 5textTwo=new JTextField(5);textResult=new JTextField(5);operatorLabel=new
36、JLabel(+);operatorLabel.setFont(new Font(Arial,Font.BOLD,20);message=new JLabel(你还没有回答呢 );getProblem=new JButton( 获取题目 );giveAnwser=new JButton( 确认答案 );add(getProblem);add(textOne);add(operatorLabel);add(textTwo);add(new JLabel(=);add(textResult);add(giveAnwser);add(message);textResult.requestFocus(
37、);textOne.setEditable(false);textTwo.setEditable(false);getProblem.setActionCommand(getProblem);textResult.setActionCommand(answer);giveAnwser.setActionCommand(answer);teacherZhang.setJTextField(textOne,textTwo,textResult);teacherZhang.setJLabel(operatorLabel,message);【代码 2】_ getProblem.addActionLis
38、tener( teacherZhang); _ /将teacherZhang注册为 getProblem的ActionEvent 事件监视器【代码 3】_giveAnwser.addActionListener( teacherZhang); _/将teacherZhang注册为giveAnwser 的ActionEvent 事件监视器【代码 4】_textResult.addActionListener( teacherZhang); _/将teacherZhang注册为 textResult的ActionEvent 事件监视器setVisible(true);validate();setD
39、efaultCloseOperation(DISPOSE_ON_CLOSE);Teacher.javaimport java.util.Random;import java.awt.event.*;import javax.swing.*;public class Teacher implements ActionListener int numberOne,numberTwo;String operator=;boolean isRight;Random random; /用于给出随机数int maxInteger; /题目中最大的整数JTextField textOne,textTwo,t
40、extResult;JLabel operatorLabel,message;Teacher() random = new Random();public void setMaxInteger(int n) maxInteger=n;public void actionPerformed(ActionEvent e) String str = e.getActionCommand();if(str.equals(getProblem) numberOne = random.nextInt(maxInteger)+1;/1 至maxInteger之间的随机数 ;numberTwo=random.
41、nextInt(maxInteger)+1;double d=Math.random(); / 获取(0,1)之间的随机数if(d=0.5)operator=+;elseoperator=-;textOne.setText(+numberOne);textTwo.setText(+numberTwo);operatorLabel.setText(operator);message.setText(请回答 );textResult.setText(null);else if(str.equals(answer) String answer=textResult.getText();try int
42、 result=Integer.parseInt(answer);if(operator.equals(+)if(result= =numberOne+numberTwo)message.setText(你回答正确 );elsemessage.setText(你回答错误 );else if(operator.equals(-)if(result= =numberOne-numberTwo)message.setText(你回答正确 );elsemessage.setText(你回答错误 );catch(NumberFormatException ex) message.setText(请输入数
43、字字符 );public void setJTextField(JTextField . t) textOne=t0;textTwo=t1;textResult=t2;public void setJLabel(JLabel .label) operatorLabel=label0;message=label1;2. 有如下 java源程序,程序的功能是在数组中查找键盘键入的整数。如果找到则输出该整数在数组中的序号,否则输出“ not found”。例如,运行程序,输入 99,程序输出: 99在数组中的序号是 5;输入 59,程序输出: not found。仔细阅读程序代码,请按模板要求,在【
44、代码】处填写合适的 Java程序代码。(注意:不改动程序的结构,不得增行或删行)。import java.io.*;import java.util.Scanner;public class J_Test public static void main(String args) throws IOException int 【代码 1】_a_ _ = 83,75,92,67,55,99,78,61;Scanner in = new Scanner(【代码 2】_System.in_);int x = Integer.parseInt( 【代码 3】_in.readLine()_ _);int index = -1;for(int i = 0; 【代码 4】_i=a.Length _; +i) if(ai = x) index = i;break;if( 【代码 5】_index=-1_ _