java设计一个公共的父类_在其中定义求面积的方法,Java面向对象程序设计复习题附答案...

Java面向对象程序设计复习题

一、选择题

1、下列哪个是Java中的关键字( C )。

A、run B、Integer C、default D、implement

2、下面关于Java.applet.Applet和其祖先类的描述语句哪个不对( B )。

A、Applet是Container的一种 B、Applet是Window的一种

C、Applet是Component的一种 D、Applet是Panel的一种

3、下列类 DataOutputStream的构造方法正确的是( A )。

A、new dataOutputStream(new FileOutputStream(“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、int

5、在接口MouseMotionListener中方法正确的是( A )。

A、Public void mouseDragged(MouseEvent)

B、Public boolean mouseDragged(MouseEvent)

C、Public void mouseDragged(MouseMotionEvent)

D、Public boolean MouseDragged(MouseMotionEvent)

6、下面是一些异常类的层次关系

Java.lang.Exception

Java.lang.RuntimeException

Java.lang.IndexOutOfBoundsException

Java.lang.ArrayIndexOutOfBoundsException

Java.lang.StringIndexOutOfBoundsException

假设有一个方法X,能够抛出两个异常,Array Index和String Index异常,假定方法X中没有try-catch语句,下面哪个答案是正确的。( B )

A、方法X应该声明抛弃ArrayIndexOutOfBoundsException和StringIndexOutOfBounds Exception。

B、如果调用X的方法捕获IndexOutOfBoundsException,则ArrayIndexOutOfBounds Exception和StringIndexOutOfBoundsException都可以被捕获。

C、如果方法X声明抛弃IndexOutOfBoundsException,则调用X的方法必须用Try-catch语句

捕获。

D、方法X不能声明抛弃异常。

7、现有一变量声明为boolean aa;下面赋值语句中正确的是( D )。

A、aa=0 B、aa=True C、aa="true" D、aa=false

8、某类Example的main()方法参数为args,当输入数据Java Example cat时,args[0]的值为( A )。

A、cat B、Java C、example D、null

9、String s1=new String(“Java”);String s2=new String(s1)则下列哪个说法是正确的( C )。

A、表达式s1==s2为真

B、s1和s2是同一个对象

C、表达式s1.equals(s2)为真

D、以上均不对

10、类定义如下

class Foo{

public 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、virtual

12、下列符号中不能作为Java标识符的是( D )。

A、abc B、$str1 C、_pore D、45six

13、方法methodA定义如下:

returnType methodA(byte x,double y){

return (short)x/y*2;

}

则返回值returnType为( C )。

A、byte B、double C、short D、int

14、如果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、下列二维数组定义中错误的是( A )。

A、int a[][]=new int[][];

B、int []a[]=new int[10][10];

C、int a[][]=new int[10][10];

D、int [][]a=new int[10][10];

16、关于下列语句哪个答案是正确的( D )。

System.out.println(4|7);

A、4 B、5 C、6 D、7

17、下面哪一个AWT组件可以有菜单栏MenuBar( A )。

A、Java.awt.Frame

B、Java.awt.Window

C、Java.awt.Applet

D、Java.awt.Panel

18、下列哪个方法用于创建并开始一个新的线程( B )。

A、run();

B、start();

C、execute();

D、run(Runnable r);

19、如果有Boolean a=new Boolean(“yes”),则a.booleanValue()值为( D )。

A、yes B、“yes” C、true D、false

20、以下类 DataOutputStream的构造方法正确的是( C )。

A、new dataInputStream(“in.txt”);

B、new dataInputStream(new file(“in.txt”));

C、new dataInputStream(new FileInputStream(“in.txt”));

D、new dataInputStream(new FileWriter(“in.txt”));

21、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。

A、.Java B、.class C、.html D、.exe

22、设 x = 1 , y = 2 , z = 3,则表达式 y+=z--/++x 的值是( A )。

A、3 B、3.5 C、4 D、5

23、在Applet表面输出文字时,可以选择不同的颜色,但是忘记了设置颜色的方法,应该首先在哪个类里面寻找( D )。

A、Java .awt.Applet

B、Java.awt.Panel

C、Java.applet.Applet

D、Java.awt.Component

24、类Cycle的main()方法为:

public static void main(String args[]){

System.out.println(args[0]);

}

则运行时如果命令行语句为Java Cycle one two three,则输出结果为( B )。

A、Cycle B、one C、two D、three

25、下面哪一个是Thread类中的静态方法( D )。

A、start() B、stop() C、run() D、sleep(long m)

26、关于下列语句哪个答案是正确的( A )。

if(5&7&&5|2)System.out.println(“true”);

A、不能编译成功 B、可以编译成功,输出true

C、可以编译成功,但无输出 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.out.println(a1.add(1));

Ad a2=new Ad();

System.out.println(a2.add(2));

}

}

class Ad{

static int total = 10;

public int add(int i){

total=total+i;

return total;

}

}

A、11,12 B、11,13 C、11,11 D、12,12

29、基于Java.awt.Frame的一个程序中包含一个Panel,Panel其中包含一个Label,在Frame和Panel中分别有下面的一些语句,

//Frame里面的语句

setFont( new Font(" Serif", Font. ITALIC, 18 );

setBackground( Color. cyan );

//Panel中的语句

setBackground( Color. white );

setForeground( Color. magenta );

请问Label用什么颜色和字体显示( A )。

A、Background=white;foreground=magenta;font=Serif Italic style,18 point

B、Background=cyan;foreground=black;font=Serif Italic style,18 point

C、Background=cyan;foreground=black;font=system default style for labels

D、Background=white;foreground=magenta;font=system default style for labels

30、语句for(int x=0,y=0;(y!=0)&&(x

A、无限次 B、一次也不执行 C、执行4次 D、执行3次

二、判断题

1、abstract是抽象修饰符,可以用来修饰类及其属性和方法。( 对 )

2、Java支持多线程机制。( 对 )

3、一个Java源程序文件中允许有多个公共类。( 错 )

4、重载的方法可以通过它们的返回值类型的不同来区分。( 错 )

5、子类要调用父类的方法,必须使用super关键字。( 错 )

6、子类拥有的成员数目一定大于等于父类拥有的成员数目。( 错 )

7、一个catch块也可以区分处理多个不同类型的异常,只要它们是该catch语句块异常参数的子类或其本身。( 对 )

8、程序中一旦执行了catch语句块,则不会执行finally语句块。( 错 )

9、新建一个Frame对象,则其将立即显示在屏幕上。( 错 )

10、一个正在执行的线程使用yield()方法将处理器让给其它同优先级的其它线程。( 对 )

11、Java中的的字符使用的是 16 位的Unicode 编码。 ( 对 )

12、for 语句中的循环体不能为空。( 错 )

13、Java 仅支持类间的单重继承。 ( 对 )

14.接口是由常量和抽象方法组成的特殊类。( 对 )

15、构造函数的方法名可由编程人员任意命名。( 错 )

16、使用静态属性必须以类名做前缀。 ( 错 )

17、类的私有属性和私有方法可以被其子类访问。( 错 )

18、使用了FlowLayout布局管理器,不能改变组件的高度。( 对 )

19、Java.lang.RuntimeException及其子类的异常可以不捕获。( 对 )

20、当用户在TextField中改变光标的位置时,会产生一个TextEvent事件。( 错 )

31、Java程序是由若干类定义组成的,类定义包括定义类头和定义类体。( 对 )

32、类Class1中的属性被private修饰符修饰为私有变量,所以方法不能访问它。( 错 )

34、引用一个类的属性或调用其方法,必须以这个类的对象为前缀。( 错 )

35、与未加访问控制符的缺省情况相比,public和protected修饰符扩大了类及其属性和方法的被访问范围,private修饰符则缩小了这种范围。( 对 )

36、子类要调用父类的方法,必须使用super关键字。( 错 )

37、因为Java不支持多重继承,所以定义类时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; System.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 InputStreamReader(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 class Test{

public static void main(String args[ ]){

int i , s=0;

int a[ ]={ 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 ,90};

for( i=0 ; i

if ( a[i]%3==0 )

continue;

s+=a[i] ;

}

System.out.println("s="+s);

}

}

程序执行后,在命令行的输出结果是什么?

270

4. 阅读下面的程序代码

import java.util.*;

public class Example9_14 {

public static void main(String args[]) {

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;

}

System.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) {

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);

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

赵一90

6. 写出下面的程序编译、运行后的结果。

public class Test{

public static void main(String args[]) {

new Student("Tom", 'm', 90, 88);

new Student("Jack", 'm', 66, 89);

new Student("Mary", 'f', 76, 86);

System.out.println("name\tsex\tchinese\tenglish");

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;

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 {

do{

System.out.println(friend.toString());

friend=friend.next;

}while(friend!=null);

}

}

public String toString() {

return new String(name+"\t"+sex+"\t"+chinese+"\t"+english);

}

}

7. 写出以下程序的功能。

import java.io.*;

public class TestFile

{

public static void main(String args[]) throws Exception

{

BufferedReader br = new BufferedReader(

new InputStreamReader(System.in));

BufferedWriter bw = new BufferedWriter(new FileWriter(“input.txt")); 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(String[] args) {

Dog snoppy= new Dog(); }

}

四、程序填空题

1.以下程序是一个算术测试小软件,用来训练小学生的算术能力。程序有3个类组成,其中Teacher对象充当监视器,负责给出算术题目,并判断回答者的答案是否正确。ComputerFrame对象负责为算术题目提供视图,比如用户可以通过ComputerFrame对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答案;MailClass是软件的主类。 程序运行效果如下图所示。

仔细阅读程序代码,请按模板要求,在【代码】处填写合适的Java程序代码。

MainClass.java

public class MainClass {

public static void main(String args[]) {

ComputerFrame frame;

frame=new ComputerFrame();

frame.setTitle("算术测试");

frame.setBounds(100,100,650,180);

}

}

ComputerFrame.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class ComputerFrame extends JFrame {

JMenuBar menubar;

JMenu choiceGrade; //选择级别的菜单

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的布局为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() {

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,其可见字符长是5

textTwo=new JTextField(5);

textResult=new JTextField(5);

operatorLabel=new 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();

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.addActionListener(teacherZhang); ____________ //将teacherZhang注册为getProblem的ActionEvent事件监视器

【代码3】_____giveAnwser.addActionListener(teacherZhang); ___//将teacherZhang注册为giveAnwser的ActionEvent事件监视器

【代码4】__________textResult.addActionListener(teacherZhang); __//将teacherZhang注册为textResult的ActionEvent事件监视器

setVisible(true);

validate();

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

}

Teacher.java

import 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,textResult;

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.nextInt(maxInteger)+1;

double d=Math.random(); // 获取(0,1)之间的随机数

if(d>=0.5)

operator="+";

else

operator="-";

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 result=Integer.parseInt(answer);

if(operator.equals("+")){

if(result= =numberOne+numberTwo)

message.setText("你回答正确");

else

message.setText("你回答错误");

}

else if(operator.equals("-")){

if(result= =numberOne-numberTwo)

message.setText("你回答正确");

else

message.setText("你回答错误");

}

}

catch(NumberFormatException ex) {

message.setText("请输入数字字符");

}

}

}

public void setJTextField(JTextField ... t) {

textOne=t[0];

textTwo=t[1];

textResult=t[2];

}

public void setJLabel(JLabel ...label) {

operatorLabel=label[0];

message=label[1];

}

}

2. 有如下 java源程序,程序的功能是在数组中查找键盘键入的整数。如果找到则输出该整数在数组中的序号,否则输出“not found”。例如,运行程序,输入99,程序输出:99在数组中的序号是5;输入 59,程序输出:not found。

仔细阅读程序代码,请按模板要求,在【代码】处填写合适的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

if(a[i] == x) {

index = i;

break;

}

}

if(【代码5】_____index==-1____________________________)

System.out.println("not found");

else

System.out.println(x + "在数组中的序号是" + index);

}

}

3. 下面程序的运行结果如下图。单击“Close”按钮关闭窗口。

请阅读程序,在(1)和(2)处补充相应的内容,使整个程序能够正常运行。

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class J_Test {

private JFrame f;

private JButton button1, button2, button3;

public void go() {

f = new JFrame("Test");

f.setLayout(new FlowLayout());

button1 = new JButton("Ok");

button2 = new JButton("Open");

button3 = new JButton("Close");

f.add(button1);

f.add(button2);

f.add(button3);

____ button3.addActionListener(new Monitor()); ________

f.setSize(160, 106);

f.setVisible(true);

}

public static void main(String[] args) {

J_Test t = new J_Test();

t.go();

}

}

class Monitor implements ActionListener {

________ public void actionPerformed(ActionEvent e)______ {

System.exit(0);

}

}

Answer:

(1)button3.addActionListener(new Monitor());

(2)public void actionPerformed(ActionEvent e)

五、编程题

1. 编写一个计算图形面积的程序,程序应当能够计算并输出矩形、圆的面积。考虑到程序的未来扩展,

设计一个图形抽象类:Shape,在此基础上派生出图形类Rectangle类和 Circle类。

(1)Rectangle类基本信息:宽度、高度。

(2)Cirlce类基本信息:圆心坐标、半径。

(3)每个图形类有多个构造方法:默认构造方法、带参数的构造方法;成员变量为private属性,成员方法为public属性。

(4)每个图形类有计算图形面积 getArea()方法,显示图形的基本信息 toString()方法,以及访问方法 set/get。

2. 编写一个Application,接受用户从键盘输入的10个整数,并输出这10个整数的最大值和最小值。

mport java.io.* ;

public class abc

{

public static void main(String args[ ])

{ int i , n = 10 , max = 0 , min = 0 , temp = 0;

try {

BufferedReader br = new BufferedReader(

new InputStreamReader(System.in));

max = min = Integer.parseInt(br.readLine( ));

} catch ( IOException e ) { } ;

for ( i = 2 ; i

try {

BufferedReader br = new BufferedReader(

new InputStreamReader(System.in));

temp = Integer.parseInt(br.readLine( ));

if (temp > max ) max=temp;

if (temp

} catch ( IOException e ) { } ;

}

System.out.println("max="+max+"\nmin="+min);

}

}

3. 从标准输入(即键盘)读入10个整数存入整型数组a中,然后逆序输出这10个整数。

import java.io.* ;

public class Reverse

{ public static void main(String args[ ])

{ int i , n =10 ;

int a[ ] = new int[10];

for ( i = 0 ; i

try {

BufferedReader br = new BufferedReader(

new InputStreamReader(System.in));

a[i] = Integer.parseInt(br.readLine( )); // 输入一个整数

} catch ( IOException e ) { } ;

for ( i = n-1 ; i >= 0 ; i ―― )

System.out.print(a[i]+" ");

System.out.println( );

}

}

4. 编程题(略)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值