《西南大学《面向对象程序设计》作业-60-试题与答案2017年最新(共26页).docx》由会员分享,可在线阅读,更多相关《西南大学《面向对象程序设计》作业-60-试题与答案2017年最新(共26页).docx(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上27、问:阅读下面的Java代码,写出打印语句(1)、(2)、(3)的输出结果,并解释原因。 String str1 = new String(wangke); String str2 = new String(wangke); System.out.println(str1 = str2); / (1) System.out.println(str1.equals(str2); / (2) System.out.println(str1.hashCode()=str2.hashCode(); / (3)答:(1)false。因为=比较的是对象句柄,而对象str1,s
2、tr2是完全独立的两个对象,它们的句柄是不同的。(2)true。因为String类的equals()源码实现中重写了Object中的equals()方法:只要两个String对象的字符数组内容相同,就认为两个对象相等。(3)true。因为String类的hashCode()源码实现中重写了Object类中的hashCode()方法:只要String的字符数组内容相同,hashCode就相同。28、问:阅读下面的Java GUI Application。在点击“测试”按钮后,控制台的输出信息是什么?import java.awt.*;import javax.swing.*;import jav
3、a.awt.event.*;public class Test public static void main(String args) new MyFrame().launchFrame(); class MyFrame extends JFrame JButton btn = new JButton(测试); Container ctp = getContentPane(); public void launchFrame() setBounds(200,200,250,160); setResizable(false); setDefaultCloseOperation(JFrame.E
4、XIT_ON_CLOSE); ctp.setLayout(new BorderLayout(10,10); ctp.add(North, btn); btn.addActionListener(new MyActionListener(); / btn注册监听器1 btn.addActionListener(new YourActionListener(); / btn注册监听器2 setVisible(true); class MyActionListener implements ActionListener public void actionPerformed(ActionEvent
5、e) if(e.getSource() = btn) System.out.println(in MyActionListener); class YourActionListener implements ActionListener public void actionPerformed(ActionEvent e) if(e.getSource() = btn) System.out.println(in YourActionListener); 答:控制台输出: in YourActionListener in MyActionListener 因为点击事件首先被后注册的监听器new
6、YourActionListener()处理,然后再被先注册的new MyActionListener()处理。29、问:数组有没有length()这个方法? String有没有length()这个方法?答:数组没有length()方法,但有length属性。String有length()方法。30、问:&与&的区别是什么?参考答案:答:&是位运算符;&是布尔逻辑运算符。31、问:有一个程序IO.java,代码如下。发现输入1之后,还没等到输入宽,程序就直接输出了637。为什么? import java.io.*; class IO public static void main(String
7、 args) throws IOException System.out.println(计算矩形面积); System.out.print(请输入长:); int a, b; a = System.in.read(); System.out.print(请输入宽:); b = System.in.read(); System.out.println(计算矩形面积是: + a * b); 运行: C:tempjava IO 计算矩形面积 请输入长:1 请输入宽:计算矩形面积是:637答: 因为System.in.read()接收的是字节0-255。 当输入字符1以后,其实返回的是ASCII码,
8、也就是49。然后你又按了个回车,回车的ASCII码是13。 所以,结果相当于 a=49 b=13 49*13=63732、问:下面的Java程序,打印结果是什么? public class Test public static void changeStr(String str) str = welcome; public static void main(String args) String str = 1234; changeStr(str); System.out.println(str); 答:123434、问:下面的代码是否能输出wangke? try System.exit(0)
9、; finally System.out.println(wangke); 答:不会输出wangke。 在try-catch-finally结构中, 如果执行到try代码段或catch代码段中的return语句,则先运行finally代码段,再运行return语句; 如果执行到try代码段或catch代码段中的System.exit(0)语句,则直接退出程序,即这时finally代码段不会被执行到。34、问:下面的代码是否能输出wangke? try System.exit(0); finally System.out.println(wangke); 答:不会输出wangke。 在try-c
10、atch-finally结构中, 如果执行到try代码段或catch代码段中的return语句,则先运行finally代码段,再运行return语句; 如果执行到try代码段或catch代码段中的System.exit(0)语句,则直接退出程序,即这时finally代码段不会被执行到。35、问:String s = new String(xyz); 创建了几个String Object?答:两个对象。一个是“xyx”,一个是指向“xyx”的引用对象s。36、问:下面的Test.java程序,有哪两处错误?Class Test void f() public int i; 答: 错误1:Clas
11、s应改为class 错误2:public int i; 应改为int i; / 局部变量不能用权限修饰符、static修饰37、问:int count = 10; count += +count; System.out.println(count); 能否通过编译?打印输出是多少?答:可以通过编译。打印输出21。 int count = 10; count += +count; / 相当于count = count + (+count); System.out.println(count); / 输出2138、问:下面的Test.java程序,输出结果是derive吗?class base p
12、rivate void print() / 注意:private修饰 System.out.println(base); public void doprint() print(); class derive extends base private void print() / 注意:private修饰 System.out.println(derive); class Test public static void main(String args) base b = new derive(); b.doprint(); 答:不是。输出结果是base。39、阅读下面的程序,写出程序运行的输
13、出结果。public class Test2 public static char method(char ch) if(ch=A) & (ch=0; i-) s1 = s1 + method(s.charAt(i); System.out.println(s1); 答:程序运行的输出结果是:fedcba40、阅读下面程序,并回答问题。(1)try块中包含的哪些语句或表达式可能抛出异常?(2)流DataOutputStream和DataInputStream常被用于何种操作?(3)假定文件out.txt中原本没有任何数据,这段程序执行完成后,文件out.txt的内容是什么?程序在控制台窗口输出
14、什么?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(out.txt); for (int
15、 i = 0; i 10; i+) System.out.print(din.readInt() - 0 + , ); din.close(); catch (IOException e) System.err.println(发生异常: + e); e.printStackTrace(); 答:问题(1): new FileOutputStream(“out.txt”) dout.writeInt( 0 + i); dout.close( ); new FileInputStream(“out.txt”) din.readInt( ) din.close( );问题(2):常被用于读取与存储
16、(读写或输入/输出)基本数据类型的数据。问题(3):文件out.txt的内容是:0 1 2 3 4 5 6 7 8 9 程序在控制台窗口输出:0,1,2,3,4,5,6,7,8,9,41、Java AWT程序设计:在窗口中画出三个TextField(前两个用于接收用户输入的两个整数,第三个用于显示相加和),一个加号Label,一个等于号Button. 当按下Button时,将相加之和放到第三个TextField中。注意:不允许使用内部类。答: import java.awt.*; import java.awt.event.*; public class TFMath public stati
17、c 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(15); Label lblPlus = new Label(+); Button btnEqual = new Button(=); btnEqual.addActionListe
18、ner(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(TFFrame tf) this.tf = tf; public void actionPerformed(ActionEvent e) int n1 = Int
19、eger.parseInt(tf.num1.getText(); int n2 = Integer.parseInt(tf.num2.getText(); tf.num3.setText( + (n1+n2); 42、阅读下面的程序,写出输出结果。public class MyException public static void throwException() System.out.println(产生并抛出ArithmeticException类型的异常); throw new ArithmeticException(); public static void catchArrayEx
20、ception() try throwException(); System.out.println(在try语句块中的多余语句); catch(ArrayIndexOutOfBoundsException e) System.err.println(方法catchArrayException捕捉到异常); finally System.out.println(方法catchArrayException的finally语句块); System.out.println(方法catchArrayException运行结束); public static void main(String args)
21、 try catchArrayException(); catch(ArithmeticException e) System.err.println(方法main捕捉到异常); finally System.out.println(方法main的finally语句块); System.out.println(异常处理结束); 答:输出为产生并抛出ArithmeticException类型的异常方法catchArrayException的finally语句块方法main捕捉到异常方法main的finally语句块异常处理结束44、阅读下面的程序,写出输出结果。class Parent / 静态
22、变量 public static String p_StaticField = 父类-静态变量; / 变量 public String p_Field = 父类-变量; / 静态初始化块 static System.out.println(p_StaticField); System.out.println(父类-静态初始化块); / 初始化块 System.out.println(p_Field); System.out.println(父类-初始化块); / 构造器 public Parent() System.out.println(父类-构造器); public class SubCl
23、ass extends Parent / 静态变量 public static String s_StaticField = 子类-静态变量; / 变量 public String s_Field = 子类-变量; / 静态初始化块 static System.out.println(s_StaticField); System.out.println(子类-静态初始化块); / 初始化块 System.out.println(s_Field); System.out.println(子类-初始化块); / 构造器 public SubClass() System.out.println(子类
24、-构造器); / 程序入口 public static void main(String args) new SubClass(); 答:父类-静态变量父类-静态初始化块子类-静态变量子类-静态初始化块父类-变量父类-初始化块父类-构造器子类-变量子类-初始化块子类-构造器45、请按下面的要求编写程序。(1)定义一个接口Shapes,它至少包含一个可以计算面积的成员方法。(2)编写实现该Shapes接口的两个类:正方形类和圆形类。(3)编写一个具有泛型特点的类Map,要求该类可以在控制台窗口输出某种图形的面积,而且这个类的类型变量所对应的实际类型就是(2)编写的正方形类和圆形类。(4)利用具有
25、泛型特点的类Map在控制台窗口分别输出给定边长的正方形的面积和给定半径的圆的面积。答:/ 定义接口interface Shapes abstract double getArea();/ 定义Square类class Square implements Shapes public double edge;public Square(double edge) this.edge = edge;public double getArea() return (edge * edge);/ 定义Circle类class Circle implements Shapes public double ra
26、dius;public Circle(double radius) this.radius = radius;public double getArea() return (radius * radius * Math.PI);class Map / 使用泛型T,T应当是Shapes的子类 T t;public Map(T t) this.t = t; public double getArea() return t.getArea(); / 测试程序class Test public static void main(String args) Map m1 = new Map(new Squ
27、are(15.0); System.out.println(正方形的面积是: + m1.getArea(); Map m2 = new Map(new Circle(15.0); System.out.println(圆形的面积是: + m2.getArea();46、阅读下面程序,写出程序的输出结果。class SuperClass int data; SuperClass() System.out.println(SuperClass:constructor: data= + data); add(1); System.out.println(SuperClass:constructor:
28、 data= + data); public void add(int i) data += i; public void print() System.out.println(data); class SubClass extends SuperClass SubClass() System.out.println(SubClass:constructor: data= + data); add(2); System.out.println(SubClass:constructor: data= + data); public void add(int i) data += i*2; cla
29、ss Test public static void method(SuperClass a) a.add(6); a.print(); public static void main(String args) method(new SubClass(); 答:SuperClass:constructor: data=0SuperClass:constructor: data=2SubClass:constructor: data=2SubClass:constructor: data=61847、编写一个简单的乘法器,界面如下图所示,在第一个文本框中输入第一个乘数;在第二个文本框中输入第二个
30、乘数;当单击“=”按钮时,在第三个文本框中输出其乘积。答:/ import语句import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Multiply extends JFrame implements ActionListener / 组件声明及创建private JButton operator = new JButton( * );private JTextField input1 = new JTextField(5);private JTextField input2 = new JTex
31、tField(5);private JButton equal = new JButton( = );private JTextField result = new JTextField(5);/ 添加组件public Multiply () Container c = getContentPane();c.setLayout(new FlowLayout();c.add(input1);c.add(operator);c.add(input2);c.add(equal);c.add(result);equal.addActionListener(this);/ 处理按钮动作事件public
32、void actionPerformed(ActionEvent e) double operand1 = Double.valueOf(input1.getText().doubleValue();double operand2 = Double.valueOf(input2.getText().doubleValue();result.setText(String.valueOf(operand1*operand2);/ 设置框架属性public static void main(String args ) Multiply f = new Multiply();f.setDefaultC
33、loseOperation(JFrame.EXIT_ON_CLOSE);f.setSize(320, 80);f.setVisible(true);48、请设计一个软件包。要求该软件包至少拥有正方形类、圆类。要求每个类都具有构造方法、计算该图形的周长的成员方法和计算该图形的面积的成员方法。然后编写一个测试程序,分别创建这些类的实例对象,并输出这些实例对象的周长和面积。在创建这些实例对象时,构造方法的调用参数值分别是: 正方形:左上定点的坐标为(5,10),边长为15。 圆形:圆心的坐标为(0,0),圆心为15。答:interface Shapes abstract double getArea
34、(); abstract double getPerimeter();/ 定义接口class Square implements Shapes / 定义Square类 public int x, y; public int width, height; public double getArea() return (width * height); public double getPerimeter() return (2 * width + 2 * height); public Square(int x, int y, int width, int height) this.x = x;
35、 this.y = y; this.width = width; this.height = height; class Circle implements Shapes / 定义Circle类 public int x, y; public double radius; public double getArea() return (radius * radius * Math.PI); public double getPerimeter() return (2 * Math.PI * radius); public Circle(int x, int y, double r) this.x = x; this.y = y; this.radius = r; public class TestShape / 测试程序 public stati