《0837)《面向对象程序设计》网上作业题及答案.doc》由会员分享,可在线阅读,更多相关《0837)《面向对象程序设计》网上作业题及答案.doc(28页珍藏版)》请在三一办公上搜索。
1、(0837)面向对象程序设计网上作业题及答案1:单选题执行下列语句后,变量x的值是:( ) int x = 7, y = 10; switch (x / y) case 0: x+; case 7: x *= y; case 14: x += y; break; default: x %= y; A:8B:70C:80D:90参考答案:D2:单选题以下由for语句构成的循环的执行次数是:( ) for (int i=0; i=0; i=i) ;A:有语法错,不能执行B:一次也不执行C:执行1次D:无限次参考答案:D3:单选题设有定义 int i=7;char ch=b; 下面赋值语句中不正确是
2、:( )A:i = ch;B:ch = i;C:ch = (char)i;D:i = (int)ch;参考答案:B4:单选题设有定义 int i=80, j=7; double d=80.7;下列语句中正确的赋值语句是:( )A:i = d;B:i = (int)d + j;C:j = (int)i - d;D:i + j = (int)d;参考答案:B5:单选题以下关于Java语言的叙述错误的是:( )A:Java是最纯粹的面向对象语言,对面向对象方法学的支持也最全面B:Java是解释执行的语言,由Java解释器负责将Java源文件解释为机器码执行C:Java是平台无关的,即Java程序不用
3、修改就可以在不同类型的计算机平台上运行D:Java提供了大量功能丰富的可重用类库,有效减少了编程的工作量参考答案:B6:单选题下列选项中,用于声明实现一个接口关键字是:( )A:interfaceB:implementsC:importD:abstract参考答案:B7:单选题Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序“一次编写,到处运行”的特点:( )A:多线程B:与平台无关C:面向对象D:分布式参考答案:B8:单选题下列不属于Java语言关键字的是:( )A:repeatB:tryC:breakD:new参考答案:A9:单选题下列字符序列中可以作为Java语言标识符
4、的是:( )A:trueB:123_xyzC:x.yD:_x123参考答案:D10:单选题下列字符序列中不能作为Java语言标识符的是:( )A:abc_123B:圆周率PIC:falseD:_123abc参考答案:C1:单选题下列语句序列给出了k,myArr和myMethod()的声明。当调用方法myMethod(myArr,k)之后,存储在k和myArr里的值分别是:( ) int k = 7; String myArr = love, peace, and ; void myMethod(String a, int m) String temp = a1; a1 = a2; a2 = t
5、emp; m = a2.length(); A:peace,love,and,4B:peace,love,and,7C:love,and,peace,5D:love,and,peace,7参考答案:D2:单选题下列语句序列执行之后,b1,b2,b3,b4的值分别是:( ) String s1 = peace; String s2 = new String(s1); String s3 = s2; String s4 = new String(PEACE); boolean b1 = (s1 = s2); boolean b2 = s1.equals(s2); boolean b3 = (s3
6、= s2); boolean b4 = s4.equals(s3);A:true,true,false,falseB:false,true,true,trueC:false,true,true,falseD:false,true,false,false参考答案:C3:单选题下列构造String的语句中,不正确的是:( )A:String str2 = ;B:String str1 = new String( );C:String str4 = + 123;D:String str3 = new String(123);参考答案:D4:单选题下列关于构造方法的说法中,不正确的是:( )A:构造方
7、法用于创建类的实例B:构造方法不可以重载C:构造方法不具有返回值类型D:构造方法名必须和类名相同参考答案:B5:单选题既能作为类的修饰符, 也能作为类成员的修饰符的是( )A:publicB:extendsC:voidD:static参考答案:A6:论述题下面程序的执行结果是什么?class Test public static void main(String args) int sum = 0;outer:for(int i=1; i10; i+) inner:for(int j=1; j 6) continue inner;System.out.println(sum= + sum);参
8、考答案:答:sum=277:论述题写出下面程序的执行结果。public class Intern public static void main(String args) String s1 = 123456; / 字符串直接量 String s2 = 123456; / 字符串直接量 String s3 = 123 + 456; String a0 = 123; String s4 = a0 + 456; / 这不是字符串直接量 String s5 = new String(123456); / 这不是字符串直接量 String s6 = s5.intern( ); System.out.p
9、rintln(s2 + (s2=s1) ? = : !=) +s1); System.out.println(s3 + (s3=s1) ? = : !=) +s1); System.out.println(s4 + (s4=s1) ? = : !=) +s1); System.out.println(s5 + (s5=s1) ? = : !=) +s1); System.out.println(s6 + (s6=s1) ? = : !=) +s1); 参考答案:答:输出为s2=s1s3=s1s4!=s1s5!=s1s6=s11:单选题从开始执行到执行结束,小应用程序经历的3个状态分别是:( )
10、A:初始态、就绪态,结束态B:就绪态、运行态,停止态C:初始态、运行态,停止态D:就绪态、运行态,休眠态参考答案:C2:单选题下列关于Java小应用程序(Applet)的说法中,正确的是:( )A:java.applet.Applet类是所有Java小应用程序的基类B:Java小应用程序不需要编译C:Java小应用程序也需要main()方法D:Java小应用程序必须实现ActionListener接口参考答案:A3:单选题Swing的三个顶层容器分别是:( )A:JApplet,JPanel,JWindowB:JDialog,JApplet,JFrameC:JApplet,JFrame, JM
11、enuD:JFrame,JPanel,JTextArea参考答案:B4:单选题把容器划分为东、西、南、北、中5个区域的布局管理器是:( )A:BoxLayoutB:FlowLayoutC:CardLayoutD:BorderLayout参考答案:D5:论述题阅读下面的程序,写出输出结果。class Parent / 静态变量 public static String p_StaticField = 父类-静态变量; / 变量 public String p_Field = 父类-变量; / 静态初始化块 static System.out.println(p_StaticField); Sys
12、tem.out.println(父类-静态初始化块); / 初始化块 System.out.println(p_Field); System.out.println(父类-初始化块); / 构造器 public Parent() System.out.println(父类-构造器); public class SubClass extends Parent / 静态变量 public static String s_StaticField = 子类-静态变量; / 变量 public String s_Field = 子类-变量; / 静态初始化块 static System.out.prin
13、tln(s_StaticField); System.out.println(子类-静态初始化块); / 初始化块 System.out.println(s_Field); System.out.println(子类-初始化块); / 构造器 public SubClass() System.out.println(子类-构造器); / 程序入口 public static void main(String args) new SubClass(); 参考答案:1、父类-静态变量2、父类-静态初始化块3、子类-静态变量4、子类-静态初始化块5、父类-变量6、父类-初始化块7、父类-构造器8、子
14、类-变量9、子类-初始化块10、子类-构造器6:论述题下面语句中的错误都是在Java数据类型转换中的易错点。分析语句的错误原因并改正。(1) float f1 = 0.1;(2) long l1 = 12345678, l2 = 8888888888;(3) byte b1 = 1, b2 = 2, b3 = 129;(4) byte b = b1 - b2;(5)int i = 1;i = i * 0.1; / 有错(6)char c1 = a, c2 = 125;char c = c1 + c2 - 1; / 有错(7)float f1 = 0.1f, f2 = 123; float f3
15、 = f1+f2*0.1; / 有错参考答案:答:(1)float f1 = 0.1;错误原因:0.1缺省为double类型改正:float f1 = (float)0.1;或改为float f1=0.1f;(2)long l1 = 12345678, l2 = 8888888888;错误原因:8888888888已经超出缺省int型的最大表示范围,必须加字母L。改正:long l1 = 12345678, l2 = 8888888888L;(3)byte b1 = 1, b2 = 2, b3 = 129;错误原因:129在自动转换中超出范围 改正:byte b1 = 1, b2 = 2, b
16、3 = 127;(4)byte b = b1 - b2; 错误原因:b1、b2在作运算前首先转换为int型,因此减法结果就是int型,不能直接赋值给byte型的b来保存,需要强制类型转换 改正:byte b = (byte)(b1-b2); (5)int i = 1;i = i*0.1;错误原因:0.1是double型,i在乘法前会自动转换为double型,乘法结果也是double型,不能直接赋值为int型的i来保存,需要强制类型转换改正:i = (int)(i*0.1);(6)char c1=a, c2=125;char c = c1 + c2 - 1;错误原因:c1、c2在作运算前首先转换
17、为int型,因此计算结果就是int型,不能直接赋值给char型的c来保存,需要强制类型转换改正:char c = (char)(c1 + c2 - 1); (7)float f1 = 0.1f, f2 = 123; float f3 = f1+f2*0.1;错误原因:由于0.1是double型,在运算前首先全部要转换为double型,因此计算结果就是double型,不能直接赋值给float型的f4来保存,需要强制类型转换改正:float f4 = (float)(f1+f2*0.1);7:论述题阅读下面的程序,写出输出结果,并说明原因。String str1 = new String(wang
18、ke);String str2 = new String(wangke);System.out.println(str1 = str2);System.out.println(str1.equals(str2);参考答案:答:System.out.println(str1 = str2); 这一句输出flase。因为=比较的是对象句柄,显然对象str1,str2是完全独立的两个对象,它们的句柄是不同的。System.out.println(str1.equals(str2);这一句输出true。因为String类已经重写了Object中的equals方法,只要两个String对象的字符数组内容
19、相同,就认为两个对象相等。8:论述题阅读下面的程序,写出输出结果。public class MyException public static void throwException() System.out.println(产生并抛出ArithmeticException类型的异常); throw new ArithmeticException(); public static void catchArrayException() try throwException(); System.out.println(在try语句块中的多余语句); catch(ArrayIndexOutOfBou
20、ndsException e) System.err.println(方法catchArrayException捕捉到异常); finally System.out.println(方法catchArrayException的finally语句块); System.out.println(方法catchArrayException运行结束); public static void main(String args) try catchArrayException(); catch(ArithmeticException e) System.err.println(方法main捕捉到异常); f
21、inally System.out.println(方法main的finally语句块); System.out.println(异常处理结束); 参考答案:答:输出为产生并抛出ArithmeticException类型的异常方法catchArrayException的finally语句块方法main捕捉到异常方法main的finally语句块异常处理结束9:论述题下面的程序错在哪里?如何修改?class SuperClass class SubClass extends SuperClass class Test public static void main(String args) Su
22、perClass a = new SuperClass();SubClass b = new SubClass();b = (SubClass)a;参考答案:答:b = (SubClass)a;这一句无法通过编译。报错信息为:Exception in thread main java.lang.ClassCastException: SuperClass cannot be cast to SubClass原因在于向下转型(downcasting)是有前提的。改正:将SuperClass a = new SuperClass();改为SuperClass a = new SubClass();
23、就可以了。s10:论述题下面程序的执行结果是什么?class SuperClass void method() System.out.println(SuperClass:method);void fun() System.out.println(SuperClass:fun);this.method();class SubClass extends SuperClass void method() System.out.println(SubClass:method: Begin);super.fun();System.out.println(SubClass:method: End);cl
24、ass Test public static void main(String args) SubClass a = new SubClass();a.method();参考答案:答:会陷入死循环,直到栈溢出报错!SubClass:method: BeginSuperClass:fun1:单选题阅读下面的程序:该程序运行的输出结果是:( )A:peaceB:PEACEC:ecaepD:ECAEP参考答案:C2:单选题阅读下面的程序:该程序运行的输出结果是:( )A:0123456789ABCDEFB:ABCDEF0123456789C:0123456789abcdefD:fedcba98765
25、43210参考答案:D3:单选题阅读下面程序:该程序运行的输出结果是:( )A:sum = 6B:sum = 12C:sum = 32D:sum = 64参考答案:C4:单选题阅读下面的程序:该程序运行的输出结果是:( )A:1 2 2 4 8B:2 2 4 8 32C:1 4 4 16 64D:1 2 6 24 120参考答案:D1:论述题阅读下面程序,并回答问题。(1)try块中包含的哪些语句或表达式可能抛出异常?(2)流DataOutputStream和DataInputStream常被用于何种操作?(3)假定文件out.txt中原本没有任何数据,这段程序执行完成后,文件out.txt的
26、内容是什么?程序在控制台窗口输出什么?import java.io.*;public class Test4 public static void main(String args) try DataOutputStream dout = new DataOutputStream( new FileOutputStream(out.txt); for (int i = 0; i 10; i+) dout.writeInt(0 + i); dout.close(); DataInputStream din = new DataInputStream( new FileInputStream(ou
27、t.txt); for (int i = 0; i 10; i+) System.out.print(din.readInt() - 0 + , ); din.close(); catch (IOException e) System.err.println(发生异常: + e); e.printStackTrace(); 参考答案:问题(1):try块中下面的语句可能抛出异常: new FileOutputStream(out.txt); dout.writeInt( 0 + i); dout.close( ); new FileInputStream(out.txt); din.readI
28、nt( )din.close( );问题(2):常被用于读取与存储(读写或输入/输出)基本数据类型的数据。问题(3): 文件out.txt的内容是:0 1 2 3 4 5 6 7 8 9 程序在控制台窗口输出:0,1,2,3,4,5,6,7,8,9,2:论述题阅读下面程序,并回答问题。(1)Java程序分为哪两种类型,这段程序是哪一类Java程序?(2)这个图形用户界面上包含那几类组件?点击按钮后程序显示什么?(3)ActionListener是什么?程序中哪个方法是ActionListener中的方法?其功能是什么?import javax.swing.*;import java.awt.*
29、; import java.awt.event.*;public class Test4 extends JApplet implements ActionListener private Container cp = getContentPane(); private JLabel prompt = new JLabel(请点击按钮); private JButton start = new JButton(开始); private JTextField output = new JTextField(20); public void init( ) cp.setLayout(new Flo
30、wLayout(); cp.add(start); cp.add(prompt); cp.add(output); output.setEditable(false); start.addActionListener(this); public void actionPerformed(ActionEvent e) if (JButton)e.getSource( ) = start ) output.setText(好好学习,天天向上); 参考答案:问题(1):Java程序分为Java应用程序(或Java application)和Java小应用程序(或Java applet);这段程序是J
31、ava小应用程序。问题(2):界面上包含一个标签(JLabel),一个按钮(JButton)和一个文本框(JTextField);点击按钮后,文本框内显示“好好学习,天天向上”。 问题(3):ActionListener是动作事件监听器接口;方法actionPerformed()是ActionListener中的方法;其功能是处理applet界面里发生的动作事件。3:论述题Java AWT程序设计:在窗口中画出三个TextField(前两个用于接收用户输入的两个整数,第三个用于显示相加和),一个加号Label,一个等于号Button. 当按下Button时,将相加之和放到第三个TextFiel
32、d中。注意:不允许使用内部类。参考答案:import java.awt.*;import java.awt.event.*;public class TFMath public static void main(String args) new TFFrame().launchFrame();class TFFrame extends Frame TextField num1, num2, num3;public void launchFrame() num1 = new TextField(10);num2 = new TextField(10);num3 = new TextField(1
33、5);Label lblPlus = new Label(+);Button btnEqual = new Button(=);btnEqual.addActionListener(new MyMonitor(this);setLayout(new FlowLayout();add(num1);add(lblPlus);add(num2);add(btnEqual);add(num3);pack();setVisible(true);class MyMonitor implements ActionListener TFFrame tf = null;public MyMonitor(TFFr
34、ame tf) this.tf = tf;public void actionPerformed(ActionEvent e) int n1 = Integer.parseInt(tf.num1.getText();int n2 = Integer.parseInt(tf.num2.getText();tf.num3.setText( + (n1+n2);4:论述题阅读下面程序,并回答问题。(1)类Child和类Parent之间是什么关系?(2)关键字super和this分别是什么含义?(3)这段程序的输出是什么?class Parent public void printMe( ) Syst
35、em.out.println(parent); class Child extends Parent public void printMe( ) System.out.println(child); public void printAll( ) super.printMe( ); this.printMe( ); public class Test3 public static void main(String args ) Child myC = new Child( ); myC.printAll( ); 参考答案:问题(1):Child是Parent的子类(或Parent是Child
36、的父类,或继承关系)。问题(2):super指对象的父类(或超类);this指使用它的对象本身(或对对象自己的引用)。问题(3):程序的输出是: parent child5:论述题阅读下面程序,并回答问题。(1)类Test3和类SuperTest之间是什么关系?(2)关键字super和this分别是什么含义?(3)这段程序的输出是什么?class SuperTest public int age; public SuperTest(String s) System.out.println(Hi, I am + s); age = 35; public class Test3 extends S
37、uperTest public int age; public Test3(String s) super(s); System.out.println(Nice to meet you!); age = 7; public void print() System.out.println(Age is + age); System.out.println(My age is + this.age); System.out.println(My parents age is + super.age); public static void main(String args) Test3 test = new Test3(Olive); test.print(); 参考答案:问题(1):Test3是SuperTest的子类(或SuperTest是Tes