JAVA期末复习资料

更新时间:2024-04-11 04:41:01 阅读量: 综合文库 文档下载

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

一、单选题

1.下列不可作为java语言修饰符的是( D )

A) a1 B) $1 C) _1 D) 11

2.有一段java 应用程序,它的主类名是a1,那么保存它的源文件名可以是( A )

A) a1.java B) a1.class C) a1 D) 都对 3.整型数据类型中,需要内存空间最少的是( D )

A) short B) long C) int D) byte 4. Java中( C )

A) 一个子类可以有多个父类,一个父类也可以有多个子类 B) 一个子类可以有多个父类,但一个父类只可以有一个子类 C) 一个子类可以有一个父类,但一个父类可以有多个子类 D) 上述说法都不对

5.下列哪些语句关于Java内存回收的说明是正确的。( B ) A.程序员必须创建一个线程来释放内存 B. 内存回收程序负责释放无用内存

C. 内存回收程序允许程序员直接释放内存

D. 内存回收程序可以在指定的时间释放内存对象 6.下面的哪个赋值语句是不对的? ( A )

A.float f = 11.1; B.double d = 5.3E12; C.double d = 3.14159; D.double d = 3.14D;

7.以下由do-while语句构成的循环执行的次数是( B )。

int k=0;

do { ++k; }while ( k < 1 );

A.一次也不执行 B.执行1次

C.无限次 D.有语法错,不能执行

8.若有定义Sting jerry=\则s1=jerry.substring(2)的值为( C )

A. l B. love C. love Tom D. Tom

9. 类的设计要求它的某个成员变量不能被外部类直接访问,应该使用下面的哪些修饰符获得需要的访问控制( D )

A public B default C protected D private

10.在异常处理中,如释放资源、关闭文件、关闭数据库等由( C )来完成。 A.try子句 B.catch子句 C.finally子句 D.throw子句

11. 在Java中,用Package语句说明一个包时,该包的层次结构必须是( B )

A.与文件的结构相同 B.与文件目录的层次相同 C.与文件类型相同 D.与文件大小相同 12. Java 的int 型变量占内存的字节是( C )

A1 B2 C4 D与机器有关

13.为了区分类中重载的同名的不同方法,要求( A ). A.采用不同的形式参数列表 B.返回值类型不同 C.调用时用类名或对象名做前缀 D.参数名不同 14. 下面关于数组的说法,错误的是( B )。

A.数组是最简单的复合数据类型,是一系列数据的集合 B.声明数组时,必须分配内存

C.数组的元素可以是值(基本数据类型)、对象或其他数组 D.一个数组中的所有值都必须是相同的类型 15. 下列语句片段

int a=10,b=4,c=20,d=6;

System.out.println(a++*b+c*--d);

的结果为( C )

A.144 B.28 C.140 D.不能执行 16. 在Java中,所有类的根类是( A )

A. java.lang.Object B. java.lang.Class C. java.applet.Applet D. java.awt.Frame

17. int型public成员变量MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( D )

A. public int MAX_LENGTH=100 B. final int MAX_LENGTH=100

C. public const int MAX_LENGTH=100 D. public final int MAX_LENGTH=100 18.下列关于构造方法的特点描述中错误的是( A )

A.不可重载 B.方法名同类名 C.无返回类型 D.系统自动调用 19. 下面的是关于类及其修饰符的一些描述,不正确的是:( B )。 A.abstract类只能用来派生子类,不能用来创建abstract类的对象。 B.final类不但可以用来派生子类,也可以用来创建final类的对象。 C.abstract不能与final同时修饰一个类。

D.abstract方法必须在abstract类中声明,但abstract类定义中可以没有abstract方法。 20. 下列构造方法的调用方式中,正确的是 ( C )

A.按照一般方法调用 B.由用户直接调用 C.只能通过new自动调用 D.被系统调用 21. 复合语句用( B )括起来的一段代码。

A.小括号() B.大括号{} C.中括号〔〕 D.单引号‘’ 22.下列关于构造方法的叙述中,错误的是( C )

A.Java语言规定构造方法名与类名必须相同

B.Java语言规定构造方法没有返回值,但不用void声明 C.Java语言规定构造方法不可以重载

D.Java语言规定构造方法只能通过new自动调用

23. 若a 是int 型变量,计算表达式a=25/3%3 后,a 为( B )

A. 1 B. 2 C. 3 D. 4 24.Java变量中,以下不属于引用类型的数据类型是( B )

A. 类 B. 字符型 C. 数组型 D. 接口

25.编译一个定义了两个类和三个方法的Java源程序文件,总共会产生( D )个字节码文件。

A.5个字节码文件,以“.java”为扩展名 B.2个字节码文件,以“.java”为扩展名 C.5个字节码文件,以“.class”为扩展名 D.2个字节码文件,以“.class”为扩展名 26.关于实例方法和类方法,以下描述正确的是:( D ) A. 实例方法只能访问实例变量

B. 类方法既可以访问类变量,也可以访问实例变量 C. 类方法只能通过类名来调用 D. 实例方法只能通过对象来调用 27. 在编写异常处理的Java程序中,每个catch语句块都应该与( C )语句块对应,使得用该语句块来启动Java的异常处理机制。

A. if – else B. switch C. try D. throw 28. 类Test1定义如下:

1. public class Test1{

2. public float aMethod(float a, float b){ } 3. 4. }

将以下哪种方法插入行3是不合法的。( B )

A.public float aMethod(float a, float b,float c){ } B.public float aMethod(float c,float d){ }

C.public int aMethod(int a, int b){ }

D.private float aMethod(int a,int b,int c){ } 29.关于接口的定义和实现,以下描述正确的是:( A ) A. 接口定义中的方法都只有定义没有实现

B. 接口定义中的变量都必须写明final和static

C. 如果一个接口由多个类来实现,则这些类在实现该接口中的方法时应采用统一的代码 D. 如果一个类实现一个接口,则必须实现该接口中的所有方法,但方法未必声明为public. 30.下列有关事件监视器的说法正确的是( B ) A.一个组件上不可以注册多个事件监视器 B.一个事件监视器可以被注册到多个组件上

C.一个组件上注册多个事件监视器会发生冲突,不会起作用。

D.一个组件上注册多个事件监视器,只有最后一个事件监视器会起作用 31. 在java中,字符串由java.lang.String和( B )定义

A. java.lang.StringChar B. java.lang.StringBuffer C. java.io.StringChar D. java.io.StringBuffer 32.对于catch子句的排列,下列哪种是正确的( B ) A.父类在先,子类在后 B.子类在先,父类在后

C.有继承关系的异常不能在同一个try程序段内 D.先有子类,其他如何排列都无关

33.下列关于抽象类的说法四个是正确的?( C )

A.某个抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法; B.接口和抽象类是同一回事; C.绝对不能用抽象类去创建对象; D.抽象类中不可以有非抽象方法。 34. 下列描述正确的是( C )

A.多态性就是指子类的某个方法被其父类重写时,可以各自产生自己的功能行为。 B.多态性就是指子类的某个方法被其父类重写时,不能各自产生自己的功能行为。 C.多态性就是指父类的某个方法被其子类重写时,可以各自产生自己的功能行为。 D.以上都不对

35.下列说法正确的是( D )

A. try-catch-finally代码块中的finally子句只有在try子句和catch子句都执行执行之后才执行

B. 如果try代码块中出现了异常并被catch子句捕捉到,那么finally子句就不再执行了 C. 只有try代码块中没有出现异常时,finally子句才会执行

D. 不管try代码块中是否出现异常,或者catch子句是否捕捉到异常,finally子句都将被执行 36.下面( D )赋值语句不会出现编译警告或错误。

A.float f=1.3; B.char c=\ C.byte b=257; D. int i=10; 37. 将类的成员的访问权限设置为默认的,则该成员能被( A )

A同一包中的类访问 B其他包中的类访问 C所有的类访问 D所有的类的子类访问 38.下列关于Java语言的特点,描述错误的是( C )

A.Java是跨平台的编程语言 B.Java支持分布式计算 C.Java是面向过程的编程语言 D.Java支持多线程 39. System.out.println(\的输出结果应该是( A )。

A.52 B.7 C.2 D.5 40.在Java中,开发图形用户界面的程序需要使用一个系统提供的类库,这个类库就是( B )包。 A.java.io B.java.awt C.java.applet D.java.awt.event

41. 假设已经有一个类已经实现了ActionListener接口,下面哪个方法可以把这个类注册到按钮控件上?( B )。

A. addListener() B. addActionListener() C. addButtonListener() D. setListener() 42. Java 语言使用的 字符集是( C )

A. ASCII B. EBCDI C. Unicode D. BCD

43. JAVA中,为了辩别用户是否关闭窗口,要实现监听器接口( C )。 A.MouseListener B.ActionListener C.WindowListener D.以上都要

44.菜单的事件源是用鼠标点击某个菜单项,ActionListener,要实现的接口方法是actionPerformed(ActionEvent e), 获得事件源的方法是getSource(), 处理该事件的接口是( A )

A. ActionListener B.actionPerformed C. getSource D. ItemListener 45. 关键字supper的作用是( D )

A用来访问父类被隐藏的成员变量 B用来调用父类中被重载的方法 C用来调用父类的构造函数 D以上都是 46.下列定义形式错误的是( B )

A float a[]; B float a[5]; Cint a[]=new int[5]; D float []c;

47. 一个事件源必须注册监听器才能接收一个事件通知,以将产生的事件对象传输给( D )来处理。

A.事件代理(监听器) B.事件源 C.主程序 D.事件处理方法 48.Java 中 main() 函数的返回值是什么 ? ( D ) A 、 String B 、 int C 、 char D 、 void

49.如下哪个字串在Java 中可作为自定义标识符?( A ) A.$number B.super C.3number D .#number 50.如下哪个不是 Java 中有效的关键字? ( B ) A.const B. NULL C.false D.this

51.如下哪个不是 Java 中正确的整数表示 ?( D ) A.22 B. 0x22 C. 022 D.22H

二、填空题

1.若x = 5,y = 10,则x < y和x >= y的逻辑值分别为1和0。

Java的图形界面技术经历了两个发展阶段,分别通过提供AWT开发包和swing开发包来实现。 2.如果在子类中想使用被子类隐藏了的父类成员变量或方法就可以使用关键字super。 3.使用关键字boolean来定义逻辑变量。

4.在Java中,所有类的根类是java.lang.Object。

5.如果一个Java程序文件中定义有3个类,编译该源程序文件将产生3个文件名与类名相同而扩展名为.class的字节码文件。

6.Java提供了java.io包,其中包括一系列的类来实现输入/输出处理。 7.在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用2字节内存空间。 8.在java 语言中,所有的数组都有一个Length属性,这个属性存储了该数组的元素的个数(数组长度)。

9.一个对象通过调用从Objecto类中继承的toString方法,可以获得该对象的字符串表示,该字符串的形式为:对象的类的名字 @对象的引用地址。 10.“3cat”.matches(\\\\dcat)的值是true。

11.在循环体中,如果想结束本次循环可以用continue _语句。

12.在循环体中,如果想跳出循环,结束整个循环可以用break语句。 13..Swing的事件处理机制包括事件源、事件和事件处理。

14.Java源文件中最多只能有一个public或公共类,其它类的个数不限。 15.如果一个方法被修饰为final方法,则这个方法不能被重写。 16.“Look”.equals(“look”)的值是false。 17.创建一个标识有“关闭”字样的按钮对象gb的语句为 ( Button gb = new Button(“关闭”) )。 18.数组声明后,必须使用new运算符分配内存空间。

19.类体有两部分构成:一部分是变量的定义,另一部分是方法的定义。 20.抽象方法是一种仅有方法头,没有具体方法体和操作实现的方法。

21.Java 的图形界面技术经历了两个发展阶段,分别通过提供AWT 开发包和Swing开发包来实现。 22.在类方法中只能调用类变量和类方法,不能调用实例方法。 23.Java中不用修饰的成员变量称为友好变量。

24.访问权限是private变量,只能在本类中使用,不能在类外使用。

25.访问权限是public变量,不但在本类中使用,还可以在任何另外一个类中使用。 26.访问权限是友好变量,只能在本类和与本类同一个包中的其他类使用。 27.继承是一种由已有的类创建新类的机制。 28.在编写异常处理的Java程序中,每个catch语句块都应该与try语句块对应,使得用该语句块来启动Java的异常处理机制。

29.方法体中抛出异常的关键字是throw。

30.用修饰符static说明的成员变量是类变量。

(private同一个类可以访问,public 是全局都可以访问,子类,同一个包,同一个类都可以访问),protected是同一类,同一个包,子类可以访问,无修饰符号是缺省类型--default,可以在同一个类,同一个包内访问)

31.为了能使用Java提供的类,我们可以使用import语句来引入所需的类。

32.Object类有一个public方法是_toString,一个对象通过调用该方法可以获得该对象的字符串表示。

33.在Java中,负责对字节代码解释执行的是Java虚拟机jvm。

34.在Java中,由Java编译器自动导入,而无需在程序中用import导入的包是java.lang。 35.创建可修改的字符串对象,我们会基于(StringBuffer)类来创建。

36.Java语言的各种数据类型之间提供两种转换:强制转换和 自动转换 。 37.可以使用String类直接调用valueOf()方法将数值转化为字符串。

38.开发与运行Java程序需要经过的三个主要步骤为编辑、编译和运行。 (编辑源程序、编译生成字节码 和解释运行字节码。...)

39.Java程序中可以向容器添加组件,一个容器可以使用add()方法将组件添加到该容器中。 40.创建数组后,系统会给每一个数组元素一个默认的值,如float型是0.0。

41.在java程序中,用关键字final修饰的常量对象创建后就不能再修改了。

42.若有定义int[ ]a=new int[8];则a 的数组元素中第7 个元素和第8 个元素的下标分别是6和7。

43.接口是一种只含有抽象方法或常量的一种特殊抽象类。 44.如果一个类中定义了几个名为method的方法,这些方法的参数都是整数,则这些方法的参数个数必须是不同的,这种现象称为方法的重载。

45.接口体中所有的成员,其访问权限一定是(public)。 46.接口中所有属性均为public, static和final的。 47.在一个类的内部被嵌套定义的类称为内部类。 48.接口中的方法被默认的访问权限是public。 49.“RedBird”.indexOf(“Bird”)的值是3。

50.标识符是以字母、下划线、美元符号作为首字母的字符串序列。

51.final类不能被继承,即不能有子类。

52.javax.swing包中的JFrame类或子类所创建的一个对象就是一个窗口。 53.捕获异常的统一出口通过finally语句实现。

54.定义类的构造方法不能有返回值类型,其名称与 类 名相同 55.下列选项中,用于实现接口的关键字是(implements )

56..程序可以处理的异常对应的类是java.lang.Exception及其子类。

57.Java程序中件,一个容器可以使用add()方法将组件添加到该容器中。 58.成员变量在整个类内都有效, 局部变量只在定义他的方法内有效。 59.同一段程序可能产生不止一种异常。可以放置多个catch 子句,其中每一种异常类型都将被检查,第一个与之匹配的就会被执行。

60.String类是不可变类,对象所包含的字符串内容永远不会被改变。 61.在java语言中,boolean型常量只有true和false两个值。

62.Java中能够产生事件的对象都可以成为事件源,如文本框、按钮、键盘等。

63.局部变量的名字与成员变量的名字相同,若想在该方法内使用成员变量,必须使用关键字this。 64.局部变量的名字与成员变量的名字相同,若想在该方法内使用成员变量,必须使用关键字this。 65.在java程序中,把关键字super()加到方法名称的前面,来实现子类调用父类的方法。 66.使用关键字 interface来定义接口。

67.异常处理的方法有两种:应用try?catch?finally结构对异常进行捕捉和处理、通过throws与throw语句抛出异常进行处理。

68..在Java中用关键字package来创建包。

69.在Java程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多重继承关系。 70.容器里的组件的位置和大小是由布局管理器决定的。

71.创建一个引用名为button,标识为”计算”的按钮,请写出创建语句。JButton button=new JButton(“计算”。

72.创建一个菜单时,菜单放在菜单条里,菜单选项放在菜单里。

73.在窗口中增加菜单条,必须使用Frame类中的方法:setMenuBar(Menubar)。 74.Java.awt包中的Menu类是负责创建菜单的。它的一个实例就是一个菜单。 75.在Menu类的方法中, add(String s)方法是向菜单增加指定的选项。

76.在Menu类的方法中, getItem(int index)方法是得到指定索引处的选项。 77.在Menu类的方法中, getItemCount( )方法是得到菜单选项的数目。

78.在Menu类的方法中, remove(int index)方法是删除菜单的指定位置的菜单选项。 79.在Menu类的方法中, removeAll( )方法是删除菜单的所有选项。

80.Java.awt包中的MenuItem类是负责创建菜单项的,它的一个实例就是一个菜单项。

三、程序填空题

1. 按注释说明,在下划线处填入正确的语句

public class Exam3 {

public static void main(String args[]) { byte d[]=\

System.out.println(\数组d的长度是:\ String s=______________________; //用字节数组构造字符串。 System.out.println(s); //输出:How are you }}

2. 已知3*3矩阵如下 : 1 2 3 4 5 6 7 8 9

假设(1 5 9)为该矩阵的正对角线。以下程序是求该矩阵的正对角线的值的和。请完成程序。

public class Test{ public static void main(String[] args) { int i, j, sum = 0; int count = 1;

int a[][] = new int[3][3]; for (i = 0; i < 3; i++) {

for (j = 0; j < 3; j++) { a[i][j] =count; // 初始化数组 count++; } }

//打印二维数组

for (i = 0; i < 3; i++) {

for (j = 0; j < 3; j++) {

System.out.print(a[i][j]+ \ }

System.out.println(\ }

//显示对角线之和

for (i = 0; i < 3; i++) { sum =sum+a[i][i]; }

System.out.println(\对角线之和:\ }

}

3. 下面程序决断用户从键盘输入的字符序列是否全部由英文字母组成,请填空。 import java.util.Scanner; public class E{

public static void main (String args[ ]) { String regex = \

Scanner scanner = new Scanner(System.in);//从键盘输入文本。 String str = scanner.nextLine();

if(str.matches(regex)) //字符串分析是否全部由英文字母组成。

{

System.out.println(str+\中的字符都是英文字母\ } } }

4. 如下java源程序文件中,程序的功能是在数组中查找键盘键入的整数。如果找到则输出该整数在数组中的序号,否则输出“not found”。例如,运行程序,输入99,程序输出:99在数组中的序号是5;输入59,程序输出:not found。请仔细阅读程序,补充相应的语句,使整个程序能够正常运行。(注意: 不改动程序的结构,不得增行或删行)

【程序代码】

import java.io.*;

import java.util.Scanner; public class J_Test{

public static void main(String[] args) throws IOException{ int a[]= {83,75,92,67,55,99,78,61};

Scanner in = new Scanner(System.in);

int x = Integer.parseInt(in.readLine()); int index = -1;

for(int i = 0; i<8; ++i){ if(a[i] == x){ index = i; break; } }

if(index == -1)

System.out.println(\ else

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

}

四、简答题:

1、在继承关系中,方法的重写要遵循“两同两小一大”规则,简述两同两小一大原则的含义。 参考答案:“两同”即方法名相同、形参列表相同,“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常应比父类方法声明抛出的异常类更小或相等。“一大”指的是子类方法的访问权限应比父类方法更大或相等。

2、子类继承父类的哪些成员变量和方法?子类在什么情况下隐藏父类的成员变量和方法?在子类中是否允许有一个方法和父类的方法名字相同,而类型不同?

参考答案:①子类和父类在同一个包中时,子类可以继承父类的除private属性的所有方法和成员变量,当子类与

父类不在同一个包中时,子类只能继承父类的protected和public属性的成员变量和方法。 ②子类中定义的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量;子类中定义一个方法,并且这个方法的名字、返回类型、参数个数和类型与从父类继承的方法完全相同,子类就隐藏从父类继承来的方法(方法的重写)。

③在子类中允许有一个方法和父类的方法名字相同而类型不同。 3、下列代码是否可以编译成功?由此得出的结论是什么? class Animal {

public void eat() throws IOException {

System.out.println(\ throw new IOException(); } }

class Horse extends Animal {

public void eat() throws Exception {

System.out.println(\ throw new Exception(); } } 答案:不能

结论:重写方法 子类不能抛出比父类更为广泛的异常,及异常范围不能扩大 4、下列代码输出结果为?由此得出的结论是什么? class Animal {

public static void eat(){

System.out.println (\ } }

class Horse extends Animal{ public static void eat(){

System.out.println (\ } }

public class Hidden {

public static void main(String[] args) { Animal h = new Horse(); h.eat(); } }

答案:Animal is eating.

结论:静态方法和所属的类进行绑定,实例方法和所属的对象进行绑定

5、如果在某个方法中访问名为a的变量,简述系统查找变量a的顺序

参考答案:先查找本方法中是否有a局部变量,再查找当前类中是否有a的成员变量,最后查找当前类的直接父类中是否包含a成员变量,依次上溯到间接父类,直到java.lang.Object类,如果最终不能找到,则系统出现编译错误。

6、下列代码的输出结果是什么?原因是什么?

StringBuffer sb1 = new StringBuffer(\ StringBuffer sb2 = new StringBuffer(\ System.out.println(sb1.equals(sb2));

String s1 = new String(\ String s2 = new String(\

System.out.println(s1.equals(s2));

答案:false true

StringBuffer类中没有重新定义equals这个方法,而String类中重新定义了equals这个方法。

五、编程题

1、请写出完整的程序代码,定义一个类,类名为Test,求1到10的阶乘 public class Test{

public static void main(String[] argv){ long result =1; for(int i =1;i<=10;i++){ result = result*i;

} System.out.println(“1到10的阶乘是:”+result); } }

2、请写出完整的程序代码,类名为Test,利用for语句打印九九乘法表。 public class Test{

public static void main(String[] argv){ long result =1; for(int i =1;i<=9;i++){ for(int j=1;j<=i;j++){ result = i*j; System.out.print(i+”*”+j+”=”+result + } System.out.println(“”); } } }

3、请写出完整的程序代码,类名为Test,求1+2+3+??100的奇数的和

public class Test{

public static void main(String[] args){ long result =1; for(int i =1;i<=100;i++){ if(i % 2 == 0) continue; result = result+i; } System.out.println(“1到100奇数的和是:”+result); } }

4. 请写出完整的程序代码,类名为Test,实现求出1—100之和

public class abc{

public static void main(String[] args){ for(int i=1,sum=0;i<=100;i++) sum+=i;

System.out.println(“sum=”+sum); } }

5.请写出完整的程序代码,类名为Test,实现1-100之间的偶数输出 public class For{

public static void main(String[] args) { for(int i=1; i<=100;i++){ if(i%2!=0) continue;

System.out.println(“偶数”+i); }

}

\\t”); “

6. 编写程序去除一个字符串中的全部数字字符

import java.util.*; public class E {

public static void main (String args[ ]) { Scanner reader=new Scanner(System.in); String str = reader.next(); String regex = \

str = str.replaceAll(regex,\ System.out.println(str); }}

6. 编写程序去除一个字符串中的全部数字字符

import java.util.*; public class E {

public static void main (String args[ ]) { Scanner reader=new Scanner(System.in); String str = reader.next(); String regex = \

str = str.replaceAll(regex,\ System.out.println(str); }}

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

Top