面向对象程序设计期末复习

更新时间:2024-01-30 08:17:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

面向对象程序设计课程期末复习

一、填空题

1.Java源程序的扩展名是 .java ,经过编译后的程序的扩展名是 .class 。 2.Socket通常也称为 套接字 ,用于描述 IP地址 和 端口 。 3.线程的优先级在 0 至 31 之间,数值越大 任务越紧急 4.构造方法是一种特殊的成员方法,构造方法名与 类名 相同 5.Java语言只允许单继承,指每个类只能有一个 父类 。

6. 在面向对象方法中, 类 描述的是具有相似属性与操作的一组对象。 7. 对象 是Java程序中基本的结构单位。

8. 组件不能独立地显示出来,必须将组件放在一定的 容器 中才能显示。 9. 能将显示空间分成很多层的布局管理器是 CardLayout 。

10. 任何一个Java程序都默认引入一个包,这个包的名字叫 java.Lang 。 11. Java语言中,有一个类是所有类或接口的父类,这个类的名称是 Object 。 12. 只能被同一包中的类访问的类中定义的成员变量是 default 成员 13. J2EE 是大型企业级用容器管理专用组件的应用平台。 14. 在Java语言中,用 abstract 修饰符定义的类为抽象类。 15.Swing中用来表示面板的类是javax.swing. event 。

xxx16.执行下列代码后的结果是什么? int x,a=2,b=3,c=4; x=++a+b+++c++; 17. 包包含了Collection的接口和类的API

18.main方法的声明格式包括

19.下列程序中构造了一个SET并且调用其方法add(),输出结果是 public class A{

public int hashCode(){return 1;}

public Boolean equals(Object b){return true}

public static void main(String args[]){ Set set=new HashSet(); set.add(new A()); set.add(new A()); set.add(new A());

System.out.println(set.size()); } }

20.下列程序的运行结果是 class A{ class Dog{

private String name; private int age; public int step;

Dog(String s,int a) {

name=s; age=a; step=0; }

public void run(Dog fast) {

fast.step++; } }

public static void main (String args[]) {

A a=new A();

Dog d=a.new Dog(\ d.step=25; d.run(d);

System.out.println(d.step); } }

21.Java语言中, 类不能被继承。

22.Java中的构造方法名必须与 同名,它没有返回值。 23.AWT中用来表示对话框的类是 。

24.Frame框架窗口的默认布局管理器是 。 25.点击窗口内的按钮时,产生的事件是 。

二、选择题

1、某一个子类要继承一个父类,要使用关键字( B ) A、import B、extends C、implements D、java

2、某一个子类要实现一个父接口,要使用关键字( C ) A、import B、extends C、implements D、java

3、在JDK环境下编译JAVA原程序使用的命令是( B ) A、java B、javac C、jvm D、tomcat

4、以下关于接口和类的说法正确的是( C ) A、接口和类都可以实现多重继承 B、子类可以继承多个父类 C、子类可以实现多个接口

D、一个子类不能同时继承某一个父类和实现某一个接口

5、嵌入到网页中运行的java小程序称为applet,嵌入到网页中的html标签时是( A A、code B、body C、applet D、html

6、java中程序的main方法必须声明为( D ) A、public B、void

C、public void D、public static void

) 7、假设现在有一个类,名称为ceshi,现在要声明和创建一个ceshi类型的对象变量ceshiA,则下述正确的是( D )

A、ceshi ceshiA; B、ceshi ceshia=new ceshi; C、ceshi ceshiA=new ceshi; D、ceshi ceshiA=new ceshi()

8、JAVA平台的无关性是通过( A )实现的 A、JAVA虚拟机 B、JAVA的编辑环境 C、Windows操作系统 D、UNIX操作系统

9、JAVA原程序经过编译器编译后生成的字节码文件的后缀是( C ) A、java B、c C、class D、src

10、JAVA运用程序可以分为两类,一类是能够独立运行的程序,其中必须含有( D A、构造方法 B、public方法 C、private方法 D、main方法

11、类中可以定义独立于方法的静态成员变量,这种变量其作用域是属于( C )A、类中的public方法 B、类中的private方法 C、独立于所有方法,只和该类声明时使用的修饰符有关 D、没有确切的范围

12、在JAVA中实现图形用户界面可以使用组建AWT和组件( A ) A、swing B、Swing C、JOptionPane D、import

13、friendly修饰符修饰的成员变量或方法,其作用域是( A )内 A、包 B、类

C、方法 D、程序文件

14、一个非抽象子类,如果要实现某个接口,则( A ) A、必须实现该接口中的所有抽象方法 B、可以实现部分抽象方法 C、可以不实现任何抽象方法 D、无所谓

15、下列关于关键字this和super的说法正确的是( C ) A、this是调用父类的方法和变量 B、super是调用本类中的方法 C、super是调用父类的方法和变量 D、没有区别

16、下列关于构造方法的说法正确的是( A ) A、构造方法必须是和类的名称相同

B、每一个类都必须显示声明自己的构造方法 C、构造方法不能进行重载

D、子类不能使用父类的构造方法

17、在JAVA中,一般菜单格式包含有下列类对象( D ) A、JMenuBar B、JMenu

C、JMenuItem D、JMenuBar、JMenu、JMenuItem

18、JAVA中的“委托事件模型”主要包括产生事件的对象、事件对象和( B ) A、事件源 B、事件处理方法 C、监听者对象 D、ActionListener

19、JAVA中提供了多种布局对象类。其中使用卡片式布局的是( D ) A、FlowLayout B、BoederLayout

) C、BoxLayout D、CardLayout

20、类的3个重要特征是类的封装、多态和( C ) A、实现 B、重写 C、继承 D、重载

21.下列哪个概念是面向对象和面向过程程序设计所共有的 ( B ) A、继承 B、流程控制 C、抽象 D、封装

22.以下关于执行Java小程序的论述错误的是: ( C ) A、可以通过浏览器调用嵌入了Java小程序的HTML文档

B、可以通过appletviewer.exe调用嵌入了Java小程序的HTML文档 C、可以通过java.exe调用嵌入了Java小程序的HTML文档 D、可以在Java集成开发环境中调用嵌入了Java小程序HTML文档 23.符合对象和类关系的是: ( D ) A、人和老虎 B、书和汽车 C、楼和土地 D、松树和植物

24.关于选择结构下列哪个说法正确? ( B ) A.if语句和 else语句必须成对出现 B.if语句可以没有else语句对应

C.一个if语句只能有一个else if语句与之对应 D.else if结构中必须有default语句

25.while循环和 do?while循环的区别是: ( D ) A.没有区别,这两个结构任何情况下效果一样 B.while循环比 do?while循环执行效率高 C.do?while循环执行次数可能为0 D.while循环执行次数可能为0

26.关于 for循环和 while循环的说法哪个正确? ( B ) A.while循环先判断后执行,for循环先执行后判断。

B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果 C.两种循环任何时候都不可以替换

D.两种循环结构中都必须有循环体,循环体不能为空

27.下列修饰符中与访问控制无关的是 ( D ) A.private B.public C.protected D.final 28.方法内的形参: ( B )

A.必须定义多个形参 B.可以没有 C.至少有一个 D.只能是简单变量 29. throws的作用: ( A ) A.表示方法可能会抛出例外 B.表示后面是方法的输出量 C.方法的标志,每个方法都必须有 D. 没有意义

30. 在Java语言中,整型常量123占用的存储字节数是: ( C ) A.1 B.2 C.4 D.8

31.关于对象成员占用内存的说法哪个正确? ( B ) A.同一个类的对象共用同一段内存

B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间 C.对象的方法不占用内存 D.以上都不对

32. return语句: ( C )

A.只能让方法返回数值 B.方法都必须含有 C.方法中可以有多句return D.不能用来返回对象 33.下列说法哪个正确? ( A ) A、一个程序可以包含多个源文件 B、一个源文件中只能有一个类 C、一个源文件中可以有多个公共类 D、一个源文件只能供一个程序使用

34.关于方法main()的说法哪个正确?( C ) A. 方法main()只能放在公共类中

C) 在try语句后面的catch语句只能有一句

D)final语句的作用是用来完成一些做不了的工作

65、下列关于内部类的说法不正确的是C

A) 内部类的类名只能在定义它的类或程序段中或在表达式内部匿名使用 B) 部类可以使用它所在类的静态成员变量和实例成员变量 C) 内部类不可以用abstract修饰符定义为抽象类

D) 内部类可作为其他类的成员,而且可访问它所在类的成员

66、下列常见的系统定义的异常中,哪个是输入、输出异常B

A)ClassNotFoundException B)IOException

C)FileNotFoundException D)UnknownHostException

67、下列哪个选项是正确计算42度(角度)的余弦值C

A)double d=Math.cos(42) B)double d=Math.cosine(42)

C)double d=Math.cos(Math.toRadians(42)) D)double d=Math.cos(Math.toDegrees(42))

68、下列InputStream类中哪个方法可以用于关闭流B

A)skip() B)close() C)mark() D)reset()

69、下列关于Frame类的说法不正确的C

A) Frame是Window类的直接子类 B) Frame对象显示的效果是一个窗口 C) Frame被默认初始化为可见

D) Frame的默认布局管理器为BorderLayout

70、下列Java常见事件类中哪个是鼠标事件类C

A)InputEvent B)KeyEvent C)MouseEvent D)WindowEvent

71、下列哪个是面向大型企业级用容器管理专用构件的应用平台A

A)J2EE B)J2ME C)J2SE D)J2DE

72、能从循环语句的循环体中跳出的语句是B A)for 语句 B)break 语句 C)while 语句 D)continue语句

73、给出下列代码,则数组初始化中哪项是不正确的A byte[] array1,array2[]; byte array3[][]; byte [][] array4;

A)array2 = array1 B)array2=array3 C)array2=array4 D)array3=array4

74、下面哪个是合法的布尔值?B

A) “false” B) false C) 0 D) f

75、下列代码的执行结果是A

public class Test {

public int aMethod() {

static int i=0; i++;

System.out.println(i); }

public static void main(String args[]) 本文由www.chinavvb.com提供 {

Test test = new Test(); test.aMethod(); } } A)编译错误 B)0 C)1

D)运行成功,但不输出

76、顺序执行下列程序语句后,则b的值是C String a=\

String b=a.substring(0,2); A)Hello B)hello C)Hel D)null

77、在oneMethod()方法运行正常的情况下,程序段将输出什么D

public void test() {

try { oneMethod();

System.out.println(\);

} catch (ArrayIndexOutOfBoundsException e) {

System.out.println(\); } catch(Exception e) {

System.out.println(\); finally {

System.out.println(\); }

A)condition 1 B)condition 2 C)condition 3 D)condition 1 Finally

78、给出下列的代码,哪行在编译时可能会有错误C

① public void modify(){ ② int i, j, k;

③ i = 100;

④ while ( i > 0 ){

⑤ j = i * 2;

⑥ System.out.println (\); ⑦ k = k + 1; ⑧ } ⑨ } A)line 4 B)line 6 C)line 7 D)line 8

三、多项选择

1.执行下列代码后,哪个结论是正确的 String[] s=new String[10]; BD A、 s[10] 为 \

B、 s[9] 为 null; C、 s[0] 为 未定义 D、 s.length 为10

2.下面的表达式哪个是正确的? AE A、 String s=\你好\

B、 String s=\你好\C、 String s=\你好\D、 String s=\你好\

E、. String s=null; int i=(s!=null)&&(s.length>0)?s.length():0;

3.选出合理的标识符 AC A、 _sys1_lll B、 2mail C、 $change D、 class

4.哪个布局管理器使用的是组件的最佳尺寸( preferred size) AE A、 FlowLayout B、 BorderLayout C、 GridLayout D、 CardLayout E、GridBagLayout

5.下列哪个方法可用于创建一个可运行的类? AE

A、 public class X implements Runable{ public void run(){ ......} } B、 public class X implements Thread{ public void run(){ ......} } C、 public class X implements Thread{ public int run(){ ......} } D、public class X implements Runable{ protected void run(){ ......} } E、public class X implements Thread{ public void run(){ ......} } 6.下面哪个方法可以在任何时候被任何线程调用? DEF A、 notify() B、 wait()

C、 notifyAll()

D、 sleep()

E、yield()

F、synchronized(this)

7.构造BufferedInputStream的合适参数是哪个? AC A BufferedInputStream B BufferedOutputStream C FileInputStream D FileOuterStream

E. File

8.下列说法正确的是 BC A java.lang.Clonable是类

B java.lang.Runnable是接口 C Double对象在java.lang包中 D Double a=1.0是正确的java语句

9.指出正确的表达式 AB A double a=1.0;

B Double a=new Double(1.0); C byte a = 340;

D Byte a = 120;

10.定义一个类名为\的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为: CD

A private class MyClass extends Object B class MyClass extends Object C public class MyClass

D public class MyClass extends Object

11.指出下列哪个方法与方法public void add(int a){}为合理的重载方法。 CD A public int add(int a) B public void add(long a) C public void add(int a,int b) D public void add(float a)

12.如果下列的方法能够正常运行,在控制台上将显示什么? ACD public void example(){ try{

unsafe();

System.out.println(\ }

catch(SafeException e)

{System.out.println(\ finally{System.out.println(\ System.out.println(\} A Test 1 B Test 2 C Test 3

D Test 4

13.下列哪些情况可以终止当前线程的运行? ABD A 抛出一个例外时。

B 当该线程调用sleep()方法时。 C 当创建一个新线程时。

D 当一个优先级高的线程进入就绪状态时。 四、程序阅读与填空题 1. 阅读程序给出结果

下列程序段用来计算Fibonacci序列的第0,1,2,?各项 public class Fibonacci {

public static void main(String args[]) {

System.out.println(\第4项=\(1) fib(4) ); }

static int fib(int n) { if (n==0||n==1) { return n; } else {

int sum=fib(n-1)+fib(n-2); return sum; }

} }

输出结果为:

(2) 3 2. 按注释提示完成文件复制的程序 //FileStream源代码如下: import java.io.*; class FileStream {

public static void main(String args[]) { try{

File inFile=new File(\指定源文件 File outFile=new File(\指定目标文件

FileInputStream fis=(1) new FileInputStrea(inFile) ; FileOutputStream fos=new FileOutputStream(outFile); int c;

//逐字节从源文件中输入,再输出到fos流 while((c=fis.read())!=-1)

(2) fos.write(c) ; fis.close(); fos.close(); }

catch(Exception e) {

System.out.println(\ } }}

3. 阅读程序,给出结果 //B.java源代码如下: class A{

int x=100;

}

class B extends A{ int x=200; void prt(){

System.out.println(\ System.out.println(\ }

public static void main(String args[]){ new B().prt(); } }

结果:SubClass:200 SuperClass:100 4. 阅读程序,给出结果:

// AbstractClassDemo.java源代码如下:

abstract class Shape { //定义抽象类Shape和抽象方法display abstract void display(); }

class Circle extends Shape {

void display() { //实现抽象类的方法 System.out.println(\ } }

class Rectangle extends Shape {

void display() { //实现抽象类的方法 System.out.println(\ }}

class Triangle extends Shape {

void display() { //实现抽象类的方法 System.out.println(\ }}

public class AbstractClassDemo{

public static void main(String args[]){

(new Circle()).display(); //定义无名对象来调用对应的display方法 (new Rectangle()).display(); (new Triangle()).display(); }}

结果:Circle Rectangle Triangle 五、判断题

1. 下述代码是否正确 F int b[5];

for(int i=0;i<5;i++) b[i]=i; 2. 下述代码是否正确 F char b=\

System.out.println(\3.接口中的方法都是抽象方法。T

4.如果一个类实现了一个接口,则该类必须实现接口中的所有方法。 F 5.Java中,java.lang.Object类是所有类的父类。T 6、public final abstract class FinalAndAbstract{ } F 以上的类定义是正确的。 7、 以下类定义是正确的。F

public class MyClass extends A, B{} class A{} class B{}

8、关键字this表示的是当前对象,this只能用在方法中。 T 9、在Java中,向上转型时不必使用强制类型转换。T 如: class ParentClass{ }

class ChildClass extends ParentClass{ } public class Test{

public static void main(String[] args){ ParentClass parent=new ParentClass(); ChildClass child=new ChildClass (); parent=child; } }

10、在java中一个类不能继承一个类的同时实现3个接口。 F 11、构造方法的返回值必须是void类型。 F 12、以下定义的变量是正确的。float f=12.0; F

13、一个类的属性既可以是基本类型的变量,也可以是对象变量 T

14.JRE 是java运行环境,JRE 是由JVM 和 java platform 核心类以及相关支撑文件组成。 T 15、Java中的字符使用的是 16 位的Unicode 编码。T 16、类是同种对象的集合和抽象。T 17、Java 仅支持类间的单重继承。T

18、接口是由常量和抽象方法组成的特殊类。T 19、构造函数的方法名可由编程人员任意命名。F 20、使用静态属性必须以类名做前缀。F

21、类的私有属性和私有方法可以被其子类访问。F

22、abstract 是抽象修饰符,可以用来修饰类及其属性和方法。F 23、Java 支持多线程机制。T

24、一个 Java 源程序中允许有多个公共类。F

25、Java 程序可以划分为两大类: Application 和 Applet T 26、for 语句中的循环体不能是空的。F 27、子类不能继承父类的构造函数。F

28、重载的方法可以通过它们的返回值类型的不同来区分。F 29、数组一定占用连续的内存空间。T 30. Java标识符允许以数字打头。 F

31. 两个类在同一个包中定义,因此,其中的一个类就可以访问另一个类的私有成员变量。T 32. 接口的方法可以使用private进行修饰,接口中可以定义一般的成员变量。F

33. 在子类构造方法中使用super(?) 对父类构造方法进行调用时,super语句不必是子类构造方法的第一句。F

34. 一个适配器类实现并提供了一个事件监听器接口中所有的方法,而且这些方法都是空方法。T 35. Integer i=new Integer(256); F

Integer j=new Integer(“256”);

则System.out.println(i==j);的结构应该是false. 36. class A extends B 语句中表示B是A的子类。F

37. “覆盖”方法为子类提供了修改父类成员方法的能力。用来覆盖的子类方法应和被覆盖的方法保持同名、同返回值类型,以及相同的参数个数和参数类型。T

38.Java为程序提供了一种catch-Throw(捕获-抛出)异常处理方式。T 六、编程题

1.定义一个类Student,具有以下属性和方法:

(1)三个private属性:姓名(name,String)、年龄(age,int)、性别(sex,String)

(2)8个public方法:1个带三个参数的构造方法、3个读取属性值的方法和3个设置属性值的方法、1个输出三个属性值的print方法

(3)main方法,创建一个实例student1,姓名为“张三”,年龄为30,性别为“男”,调用print方法输出student1的三个属性值。

定义Student的一个子类GradulateStudent(研究生),具有以下属性和方法: (1)一个private属性:导师(teacher,String)

(2)4个public方法:1个带四个参数的构造方法、1个读取导师属性的方法和1个设置导师属性的方法、1个输出四个属性的print方法

(3)main方法,创建一个实例student2,姓名为“李四”,年龄为25,性别为“男”,导师为\王五\,调用print方法输出student2的四个属性值。 2.编写类TxtFileDemo ,要求完成以下功能:

(1)使用学过的Writer、FileWriter 类,向c:\\test.txt文件写入:\1\\n\、\2\\n\、\、\

(2)利用Reader 、FileReader从文件c:\\test.txt中读入数据到一个字符数组中,并将字符数组数据显示到屏幕上

注意:对可能出现的异常要用异常处理机制进行处理。

3.在各个应用系统中,读者应该可以看到用户登录程序的影子,下面就模拟一个简单的用户登录程序,为方便理解,使用初始化参数的方式输入用户名和密码。假定用户名为liuzhen,密码为123456。 注意:

①采用初始化参数的方式即:通过main(String args[])中的args数组带入参数。运行程序格式为:java LoginDemo1 用户名 密码 ②运行结果分如下几种情况为: a.没有输入参数

输入的参数不正确,系统退出! b.输入的用户名及密码错误 错误的用户名及密码 c.输入正确的用户名和密码 欢迎刘臻光临!

③分别采用面向过程的思想和面向对象的思想进行分析和程序设计

提示:采用面向过程的思想只需在main方法中按照步骤一步一步进行字符串比较,看是否符合。采用面向对象的思想需要考虑定义几个类,具体可参考如下:

class Check //主要功能是验证操作,只需要传入用户名和密码即可完成验证 {

public Boolean validate(??){??} /*执行具体的验证操作*/ } class Operate{

private String info[];

public Operate(?){??} //构造方法 public Stirng login(){??.} //执行登录操作 public void isExit(){??} }

class LoginDemo {

public static void main(String args[]){??}}

4.按照主题一中图书借阅系统的分析,要求对图书类和读者类进行封装。 要求:

①图书类中包括索引号、书名、作者、出版社、页数等信息。此外,还需要提供一种机制,能够获得并输出系统中已经存在的图书信息--class Book;

②读者类中包括学号、姓名、密码、学院、专业、年级等信息。提供一种机制用于获得并输出系统中已经存在的读者信息—class Users。

//实例化对象进行测试

//退出系统(包括正常和非正常退出)

5.定义一个点类(Point)用来表示三维空间中的点(有三个坐标)。要求如下: (1).可以生成具有特定坐标的点对象。 (2).提供可以设置三个坐标的方法。

(3).提供可以计算该“点”距原点距离的方法。

(4).编写程序验证上述三条。

6.采用面向对象的思想编写求解几何图形(包括三角形、矩形、圆形)的周长、面积的应用程序,要求尽量用到继承、接口、上转型对象和包等技术。

提示:采用面向对象的思想需要考虑如何将上述案例进行适当的整合,找出其中有共性的地方,具体可参考如下:

interface GetProperty //定义接口,将pi值、获取面积、获取周长、获取形状名字整合 { ??}

class Mpoint //定义点 { ??}

Abstract class Disp {??}

class Triangle implements GetProperty //定义三角形类 {??}

class Rectangle implements GetProperty {。。。。。。}

public class Drawing extends Disp {??}

7.有三类图书:教材类、文学类、科技类,它们的性质不同,借出期限不同,损坏赔偿价格不同。请设计出这三类图书的属性和方法。

提示:上述三种图书由于属性不同,计算公式不同,所以计算赔偿价格时采用的算法就不同,如果三种图书独立定义成各自没有关系的类的话,会使程序代码量增大。由于上述三个类都属于图书类,这时就可以通过使用抽象类,定义它们的变量和方法,然后分别在子类中进行实现。 Abstract class BookAll{ ??}

class t_Book extends BookAll{ ??} ??

//定义main()所在的类,并且要求根据相应的提示 //做出选择然后画出不同的图形。

//定义矩形类

//定义屏幕输出需要的类

5.定义一个点类(Point)用来表示三维空间中的点(有三个坐标)。要求如下: (1).可以生成具有特定坐标的点对象。 (2).提供可以设置三个坐标的方法。

(3).提供可以计算该“点”距原点距离的方法。

(4).编写程序验证上述三条。

6.采用面向对象的思想编写求解几何图形(包括三角形、矩形、圆形)的周长、面积的应用程序,要求尽量用到继承、接口、上转型对象和包等技术。

提示:采用面向对象的思想需要考虑如何将上述案例进行适当的整合,找出其中有共性的地方,具体可参考如下:

interface GetProperty //定义接口,将pi值、获取面积、获取周长、获取形状名字整合 { ??}

class Mpoint //定义点 { ??}

Abstract class Disp {??}

class Triangle implements GetProperty //定义三角形类 {??}

class Rectangle implements GetProperty {。。。。。。}

public class Drawing extends Disp {??}

7.有三类图书:教材类、文学类、科技类,它们的性质不同,借出期限不同,损坏赔偿价格不同。请设计出这三类图书的属性和方法。

提示:上述三种图书由于属性不同,计算公式不同,所以计算赔偿价格时采用的算法就不同,如果三种图书独立定义成各自没有关系的类的话,会使程序代码量增大。由于上述三个类都属于图书类,这时就可以通过使用抽象类,定义它们的变量和方法,然后分别在子类中进行实现。 Abstract class BookAll{ ??}

class t_Book extends BookAll{ ??} ??

//定义main()所在的类,并且要求根据相应的提示 //做出选择然后画出不同的图形。

//定义矩形类

//定义屏幕输出需要的类

本文来源:https://www.bwwdw.com/article/jo1w.html

Top