【Java期末复习】《面向对象程序设计》练习库

您所在的位置:网站首页 面向对象的设计 【Java期末复习】《面向对象程序设计》练习库

【Java期末复习】《面向对象程序设计》练习库

2024-07-09 16:56| 来源: 网络整理| 查看: 265

目录

一、单选题

二、填空题

三、程序填空题

1、 super使用--有如下父类和子类的定义,根据要求填写代码

2、简单加法计算器的实现

3、House类 

4、矩形类

5、创建一个Box类,求其体积

四、函数题

6-1 求圆面积自定义异常类

6-2 判断一个数列是否已排好序

6-3 设计一个矩形类Rectangle

6-4 Person类

6-5 是否偶数

6-6 Java类实现-正方形

6-7 学生类

6-8 数组求和

6-9 Rectangle类

五、编程题

7-1 设计一个矩形类Rectangle

7-2 重复数据问题

7-3 矩阵相加

7-4 身体质量指数(BMI)测算

7-5 闰年判断

一、单选题

1、下面的方法,当输入为2的时候返回值是多少?(   D  )

public int getValue(int i) {          int result = 0;          switch (i) {             case 1:                 result = result + i;             case 2:                 result = result + i * 2;             case 3:                 result = result + i * 3;         }         return result;  }

A.0

B.2

C.4

D.10

没有break,发生case穿透现象,程序会继续向下执行,直到遇到break或者结束switch语句的大括号为止,其中i一直为2

2、在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序的特性称为(  C )。

A.隐藏 B.覆盖C.重载 D.Java不支持此特性

3、关于抽象类,下面叙述错误的是( C ) 。

A.包含抽象方法的类必须是抽象类

B.抽象方法只需要声明,不需要实现

C.抽象类可以实例化

D.抽象类中可以没有抽象方法

4、以下哪个方法用于定义线程的执行体? ( C  )

A.start()

B.init()

C.run()

D.ynchronized()

5、关于集合对象的元素遍历描述错误的是  D

A.通过集合对象可获取迭代器对象

B.通过迭代器对象的hasNext()方法判断是否还有下一个元素

C.通过迭代器对象的next()方法获取元素,并移动到下一个位置

D.通过迭代器对象可向集合中添加元素

6、 运行类C的输出是( D )。

class A {   public A() {     System.out.println("The default constructor of A is invoked");   } } class B extends A {   public B() {     System.out.println("The default constructor of B is invoked");   } } public class C  {   public static void main(String[] args) {     B b = new B();   } }

A.没有输出。

B.输出 "The default constructor of B is invoked"

C.输出"The default constructor of B is invoked",然后是"The default constructor of A is invoked"

D.输出"The default constructor of A is invoked",然后是"The default constructor of B is invoked"

7、 JFrame的缺省布局管理器是( C )。

A.FlowLayout

B.CardLayout

C.BorderLayout

D.GridLayout

8、 下面程序的输出结果为:( A )。

class A {  double f(double x, double y) {   return x * y;  } } class B extends A {  double f(double x, double y) {   return x + y;  } } public class Test {  public static void main(String args[]) {   A obj = new B();   System.out.println(obj.f(4, 6));  } }

A.10.0        成员方法的重写——子类让父类的成员方法不复存在

B.24.0

C.2.0

D.11.0

9、 以下关于继承的叙述正确的是( A )。

A.在Java中类只允许单一继承

B.在Java中,一个类只能实现一个接口

C.在Java中,一个类不能同时继承一个类和实现一个接口

D.在Java中,接口也具有单继承性

10、 以下声明合法的是( B )

A.abstract double d;    不可访问数据成员的修饰词为static和final

B.public abstract void w( );

C.default String s;     可访问数据成员的修饰词为protected public private 缺省

缺省也就是前面什么都不用修饰,就是String s

D.abstract final double method( ){ }      abstract和final不能并列修饰

11、关于下面的类,哪句是最正确的?        A

class A { private int i; protected int j; } class B extends A { private int k; protected int m; }

A.B的对象包含数据域 i, j, k, m。

B.B的对象包含数据域 j, k, m。

C.B的对象包含数据域 j, m。

D.B的对象包含数据域k, m。

题目问包含的数据域,并不是能不能访问到,B创建后在内存中会存放父类A的私有变量,只是不能直接访问,因此B的对象包含数据域i,j,k,m

12、 在Java中用什么关键字修饰的方法可以直接通过类名来调用?(   A  )

A.static

B.final

C.private

D.void

二、填空题

1、在实现多线程的程序时有两种方式,一是通过继承(Thread )类,二是通过实现(Runable )接口。

 2、使用Iterator遍历集合时,可以调用hasNext()方法判断是否存在下一个元素,若存在下一个元素,则调用next()方法取出该元素

3、 在Java GUI编程中,javax.swing包中JTextField是对单行文本进行编辑的组件。

4、 如果一个Java程序实现了监听接口ActionListener,则该程序的必须导入包java.util.event;

三、程序填空题 1、 super使用--有如下父类和子类的定义,根据要求填写代码 class Father { int a; public Father(int a) { this.a=a; } public void print() { System.out.println(a); } } class Child extends Father { int a; public Child(int a) { super(a); // 将形参a的数值赋给父类成员变量a this.a=a*10; // 将父类成员变量a的值*10赋给本类的成员变量a } public void print() { System.out.println(super.a); // 输出父类成员变量a的值 System.out.println(this.a); // 输出子类成员变量a的值 } } public class Main { public static void main(String[] args) { Child child=new Child(10); child.print(); } } 2、简单加法计算器的实现 public class Main extends JApplet implements ActionListener { Container cp=getContentPane(); JButton JButton1=new JButton("确定");//创建JButton1,并初始化 JLabel JLabel1=new JLabel("+"); JLabel JLabel2=new JLabel("="); JTextField JTextField1=new JTextField(10); JTextField JTextField2=new JTextField(10); JTextField JTextField3=new JTextField(10); public void init() {cp.setLayout(new FlowLayout()); cp.add(JTextField1); cp.add(JLabel1); cp.add(JTextField2); cp.add(JLabel2); cp.add(JTextField3); cp.add(JButton1); JButton1.addActionListener(this);//为JButton1增加监听 } public void actionPerformed(ActionEvent e) { if(e.getSource()==JButton1)//用getSource()方法获取事件源 { double sum=Double.valueOf(JTextField1.getText())+Double.valueOf(JTextField2.getText());//获取两个操作数,并转化为double型 JTextField3.setText(String.valueOf(sum)); }}} 3、House类  构造一个House类表示住宅 , 该类实现了Comparable接口。该类有一个私有的String类型成员变量address,两个私有的double型成员变量area和pirce;该类有一个带一个String型参数和两个double型参数的构造方法,用参数的值初始化house对象。为address、area和price添加getter()和setter()方法。注意,住宅的面积和价格必须大于0,如果setArea(double area)方法的参数小于等于0时,抛出一个IllegalArgumentException异常对象,异常对象的成员变量message为"住宅的面积必须大于0";如果setPrice(double price)方法的参数小于等于0时,抛出一个IllegalArgumentException异常对象,异常对象的成员变量message为"住宅的价格必须大于0"。该类有一个公共的方法int compareTo(House house),比较的依据是住宅的单位均价(价格除以面积)。如果当前对象的单位均价大于参数的单位均价,返回1;当前对象的单位均价小于参数的单位均价,返回-1;否则返回0。该类有一个公共方法toString(),根据住宅的数据生成并返回一个字符串(具体要求看输出样例)。构造一个Main ,执行一个for循环,共循环10次。每次循环从键盘读入数据创建两个House对象,比较并输出其中较大的对象;如果捕捉到异常,则输出异常信息。 import java.util.Scanner; class House implements Comparable { private String address; private double area; private double price; public House(String address,double area,double price) { setAddress(address); setArea(area); setPrice(price); } public String getAddress() { return address; } public void setAddress(String address) { this.address=address; } public double getArea() { return area; } public void setArea(double area) { if(area>0) this.area = area; else throw new IllegalArgumentException("住宅的面积必须大于0"); } public double getPrice() { return price; } public void setPrice(double price) { if(price>0) this.price = price; else throw new IllegalArgumentException("住宅的价格必须大于0"); } public int compareTo(House o) { if (price/area>o.price/o.area) return 1; else if (price/area=0) this.width = width; else throw new IllegalArgumentException("矩形的宽度必须大于等于0"); } public double getHeight() { return height; } public void setHeight(double height) { if(height>=0) this.height = height; else throw new IllegalArgumentException("矩形的高度必须大于等于0"); } public double getArea() { return width*height; } public double getPerimeter() { return 2*(width+height); } public int compareTo(Rectangle rectangle) { if (getArea()>rectangle.getArea()) return 1; else if (getArea()=0) return 3.14*r*r; else throw new CircleException(this.r); } } class CircleException extends Exception { double r; public CircleException(double r) { this.r=r; } void print() { System.out.print("圆半径为"+this.r+"不合理"); } } 6-2 判断一个数列是否已排好序

编写如下所示的一个方法,判断一个数列是否已排序,如果已按升序排列则返回true。

public static boolean isSorted(int[] list)

主测试程序输入一组数据,然后输出该数列是否已排序或未排好序。

注意:输入的第一个数为该数列的元素个数。

public static boolean isSorted(int[] list) { int n=list[0]; boolean f=true; //for(int i=1;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3