JAVA期末考试复习题

更新时间:2024-04-07 21:32:01 阅读量: 综合文库 文档下载

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

《JAVA程序设计》练习题

一、单选择题

1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( B )。 A.java B. .class C.html D. .exe

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

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

3、不允许作为类及类成员的访问控制符的是( C )。 A. public B. private C. static D. protected

4、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。

A. static void method( ) B. public void method()

C. final void method( ) D. abstract void method( )

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

C.switch结构中每个case语句中必须用break语句 D.switch结构中必须有default语句

6、while循环和 do…while循环的区别是:( D ) A.没有区别,这两个结构任何情况下效果一样 B.while循环比 do…while循环执行效率高

C.while循环是先循环后判断,所以循环体至少被执行一次 D.do…while循环是先循环后判断,所以循环体至少被执行一次

7、关于 for循环和 while循环的说法哪个正确?( B ) A.while循环先判断后执行,for循环先执行后判断。 B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果

C.两种循环任何时候都不可以替换

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

8、下列修饰符中与访问控制无关的是( D )

A.private B.public C.protected D.final

9、 void的含义:( A ) A.方法没有返回

值 B. 方法体为空

C.没有意

义 D. 定义方法时必须使用

10、 return语句:( C )

A.只能让方法返回数值 B.方法都必须含有

C.方法中可以有多句return D.不能用来返回对象

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

B、同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间

C.对象的方法不占用内存 D.以上都不对

12、下列说法哪个正确?( C ) A.不需要定义类,就能创建对象 B.对象中必须有属性和方法

C.属性可以是简单变量,也可以是一个对象 D、属性必须是简单变量

13、下列说法哪个正确?( A ) A、一个程序可以包含多个源文件 B、一个源文件中只能有一个类 C、一个源文件中可以有多个公共类 D、一个源文件只能供一个程序使用

14、关于方法main()的说法哪个正确?( CA.方法main()只能放在公共类中 B main()的头定义可以根据情况任意更改

)

C.一个类中可以没有main()方法

D.所有对象的创建都必须放在main()方法中

15、构造函数何时被调用?( A A、创建对象

时 时

C、使用对象的方法

时 性时

16、 抽象方法:( C ) A、可以有方法体

B、可以出现在非抽象类中 C、是没有方法体的方法

D、抽象类中的方法都是抽象方法

) D、使用对象的属 B、类定义

17、关于继承的说法正确的是:( B ) A、子类将继承父类所有的属性和方法。 B、子类将继承父类的非私有属性和方法。 C、子类只继承父类public方法和属性 D、子类只继承父类的方法,而不继承属性

18、关于构造函数的说法哪个正确?( C ) A、一个类只能有一个构造函数

B、一个类可以有多个不同名的构造函数 C、构造函数与类同名

D、构造函数必须自己定义,不能使用父类的构造函数 C

19、 this和super:( C ) A、都可以用在main()方法中 B、都是指一个内存地址

C、不能用在main()方法中 D、意义相同

20、关于super的说法正确的是:( C ) A、是指当前对象的内存地址

B、是指当前对象的父类对象的内存地址 C、是指当前对象的父类 D、可以用在main()方法中

21、覆盖与重载的关系是 ( A )

A、覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中

B.覆盖方法可以不同名,而重载方法必须同名 C.final修饰的方法可以被覆盖,但不能被重载 D.覆盖与重载是同一回事

22、关于接口哪个正确?( A ) A、实现一个接口必须实现接口的所有方法 B.一个类只能实现一个接口 C.接口间不能有继承关系 D.接口和抽象类是同一回事

23、异常包含下列哪些内容?( A )

A.程序执行过程中遇到的事先没有预料到的情况 B.程序中的语法错误 C.程序的编译错误 D.以上都是

24、 对于已经被定义过可能抛出异常的语句,在编程时: ( A )

A、必须使用try/catch语句处理异常,或用throws将其抛出

B.如果程序错误,必须使用 try/catch语句处理异常 C.可以置之不理

D.只能使用try/catch语句处理

25、当某一线程正处于休眠状态,而另一个线程用 Thread 类中的interrupt() 方法中断它时,抛出的异常类型是( C )。

A) IOException B) RuntimeException C)InterruptedException D) ClassNotFoundException

26、下面的程序段的功能是( D )。

File file1=new File(\file1.mkdirs();

A)在当前目录下生成子目录:\\xxx\\yyy\\zzz B)生成目录:e:\\xxx\\yyy\\zzz

C)在当前目录下生成文件xxx.yyy.zzz D)以上说法都不对

27、应用程序的main方法中有以下语句,则输出的结果是 ( B )。

String s =

\ int n = s.indexOf(\ int k = s.indexOf(\ String s2 = s.substring(n+1, k); System.out.println(s2);

A) 123456 B) 123 C) xxxxxxxxxxxxxxx D) zzzzz

28、关于下面的程序Test.java说法正确的是( D )。

public class Test { Stringx=\

int y;

publicstatic void main(String args[]) {

intz=2; System.out.println(x+y+z); } }

A)3 B)102 C) 12 D)程序有编译错误

29、应用程序的main方法中有以下语句,则输出的结果是( A )。

int b[][]={{1, 1, 1}, {2,2}, {3}}; int sum=0;

for(int i=0; i

sum+=b[i][j]; } }

System.out.println(\A) 10 B)6 C) 9 D) 13

30、应用程序的main方法中有以下语句,则执行后输出的结果是( B )。

int[] x = {125,21,5,168,98}; int min = x[0];

for (int i=1; i

System.out.println(min);

A) 125 B) 5 C) 98 D) 168

31、应用程序的main方法中有以下语句,则输出的结果是( D )。

Hashtable hashtable=new Hashtable(); hashtable.put(\hashtable.put(\hashtable.put(\

System.out.println(hashtable.get(\ +hashtable.get(\ +

hashtable.get(\ A)aaa B) bbb C) ccc D) cccbbbaaa

32、以下关于java异常说法不正确的是( D )。

A) Throwable 类是 Java 语言中Error类和Exception类的父类。

B)当异常对象是Exception类(或其子类)的实例时,能通过 Java 虚拟机或者 throw语句抛出该异常对象,并能通过try…catch…finally处理。

C)如果只用一个catch块捕捉多个异常对象,则catch 中的参数类型应是所有异常对象的父类。 D)以上说法都不对。

33、下列程序段执行后的结果是( A )。

String s = new String(\for (int i=0; i

A) aceg B) ACEG C) abcdefg D)

abcd

子句

34、有整型数组:int[] x={12,35,8,7,2};,则调用方法Arrays.sort(x)后,数组x中的元素值依次是( A )。 A) 2 7 8 12 35 B) 12 35 8 7 2

C) 35 12 8 7 2 D) 8 7 12 35 2

35、应用程序的main方法中有以下语句,则输出的结果是( A )。

String s1=new String(\ String s2=new String(\ boolean b1=s1.equals(s2); boolean b2=(s1==s2); System.out.print(b1+\ \ A)true false B) false true C) true true D)false false

36、应用程序的main方法中有以下语句,则输出的结果是 ( B )。

Hashtable hashtable=new Hashtable(); hashtable.put(\ hashtable.put(\ hashtable.put(\

System.out.println(hashtable.get(\

A)a B) abcde C) 12345 D) 67890

37、应用程序的main方法中有以下语句,则输出的结果是( B )。

String s=\ int n=s.indexOf(\ int k=s.indexOf(\ int m=s.indexOf(\

String s2=s.substring(m+1); System.out.println(s2); A) 123456 B) 67890 C) aaa D)

bbb

38、下面程序段执行后b的值是( B )。 Integerinteg =new Integer(9); boolean b = integ instanceof Object; A) 9 B) true C) 1 D) false

39、应用程序Test.java的源程序如下,在命令行键入: javaTest aaa bb c 回车后输出的结果是( A )。

public class Test {

publicstatic void main(String args[]) {

int k1=args.length;

int k2=args[1].length(); System.out.print(k1+\ \ } }

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

3 3

40、应用程序的main方法中有以下语句,则输出的结果是 (A )。

int b[][]={{1}, {2,2}, {2,2,2}}; int sum=0;

for(int i=0;i

}

System.out.println(\A) 32 B)11 C) 2 D)

3

41、应用程序的main方法中有以下语句,则执行后输出的结果是( D )。

int[] x={125,21,5,168,98}; int max=x[0];

for(int i=1;imax) max =x[i]; }

System.out.println(max);

A) 125 B) 5 C) 98 D)

168

42、程序Test.java编译运行后输出的结果是( A )。

public class Test { Strings1=\

publicstatic void main(String args[]) {

intz=2;

Testt=new Test(); System.out.println(t.s1+z); } }

A) java2 B)2 C)没有输出结

果 D)java

43、应用程序的main方法中有以下语句,则输出的结果是 ( A )。

String s1=\ double x=Double.parseDouble(s1); int y=Integer.parseInt(s2); System.out.println(x+y);

A) 12.5 B) 120.5 C) 12 “12.5”

44、如下哪个是Java中的标识符( A ) A、public B、super C、3number D、width

45、如下哪个是Java中的标识符( A )

A、fieldname B、super C、3number #number

D、 D)

46、已知如下定义:String s = \下面哪个语句不是合法的( A )

A、s += \ B、s = s + 100;

C、int len = s.length; t = s + “abc”;

47、如下哪个是Java中有效的关键字( C ) A、name B、hello false D、good

48、下面的代码段执行之后count的值是什么( int count = 1;

for (int i = 1; i <= 5; i++) { count += i; }

、String C、D ) D

System.out.println(count);

A、5 B、1 C、15 D、16

49、定义一个类,必须使用的关键字是( B ) A、public B、class C、interface D、static

50、定义一个接口必须使用的关键字是( C ) A、public B、class C、interface D、static

51、如果容器组件p的布局是BorderLayout,则在p的下边中添加一个按钮b,应该使用的语句是( C ) A、

p.add(b); B、p.add(b,\

C、p.add(b,\ D、b.add(p,\

52、声明并创建一个按钮对象b,应该使用的语句是( A )

A、Button b=new Button(); B、button b=new button();

C、Button b=new b(); D、b.setLabel(“确定”);

53、Frame对象默认的布局管理器是( B ) A、FlowLayout B、BorderLayout

C、CardLayout D、null

二、填空题

1、开发与运行Java程序需要经过的三个主要步骤为 编辑源程序 、

编译生成字节码 和 解释运行字节码 。

2、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode码占用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占 用 2 字节内存空间。

3、设 x = 2 ,则表达式 ( x + + )/3 的值是 1 。 4、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 true 和 false 。

5、 抽象 方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。 final 方法是不能被当前类的子类重新定义的方法。

6、创建一个名为 MyPackage 的包的语句是 package mypackage ,

该语句应该放在程序的位置为: 应放在程序第一句 。

7、设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 ,60 , 70}; 则执行以下几个语句后的输出结果是 120 。 int s = 0 ;

for (int i = 0 ; i < MyIntArray.length ;i + + ) if ( i % 2 = = 1 )

s += MyIntArray[i] ;

System.out.println(s);

8、在Java程序中,通过类的定义只能实现 单 重继承,但通过接口的定义可以实现 多 重继承关系。

1、如果将类MyClass声明为public,它的文件名称必须是 MyClass.java 才能正常编译。

2、Java程序中的单行注释符是 // ,多行注释符是 /*....*/ 。

3、Java中布尔类型的常量有两种,它们是 true 和 false 。

4、Java中用于定义小数的关键字有两个: float 和 double ,后者精度高于前者。

5、Java中用于两个数相等比较的运算符是: == ,用于不相等比较的运算符是 <> 。

6、在Java中定义一个字符串类型的变量str的语句是: String str ,定义一个具有10个元素的整型数组a的语句是: int [] r=new int [10] 。

7、导入mypackage包中的所类的命令是 impoartmypackage.*; 。

8、当声明一个数组int arr[] = new int[5]; 时,这代表这个数组所保存的变量类型是 int ,数组名是 arr ,数组的大小为 5 ,数组元素下标的使用范围是 0到4 。

9、假设x=13,y=4,则表达式x%y != 0的值是 true ,其数据类型是 boolean 。

10、异常处理是由

try 、 catch 和 finally 块三个关键所组成的程序块。

11、以下程序段的输出结果是 三角形 int x = 5, y = 6, z = 4;

if(x + y > z && x + z > y && z + y > x) System.out.println(\三角形\ else

System.out.println(\不是三角形\

12、下面程序段的执行结果是 6 5 4 3 2 int a[] = { 2, 3, 4, 5, 6 };

for(int i = a.length - 1; i >= 0; i--) System.out.print(a[i] + \

三、简答题

1、简述Java中异常处理的机制?

答:首先Java的异常是面向对象的。一个Java的Exception是一个描述异常情况的对象.当出现异常情况时,一个Exception对象就产生了,并放到异常的成员函数里。

Java的异常处理是通过5个关键词来实现的:try,catch,throw,throws和finally。

1.异常处理:在Java语言的错误处理结构由try,catch,finally三个块组成。其中try块存放将可能发生异常的Java语言,并管理相关的异常指针;catch块紧跟在try块后面,用来激发被捕获的异常;finally块包含清除程序没有释放的资源,句柄等。不管try块中的代码如何退出,都将执行 finally块。

2.抛出异常:Java语言可以不在方法中直接捕获,而用throw语句将异常抛给上层的调用者。Throw语句就是来明确地抛出一个异常;首先你必需得到一个Throwable的实例句柄,通过参数传到catch中,或者采用new操作符来创建一个。

2、什么是继承?

答:通过必要的说明能够实现某个类无需重新定义就拥有另一个类的某些属性和方法,并把这种关系称为继承,先定义的类称为父类,后定义的类称为子类,并且允许多层的继承关系。

3、请简述重载和重写的区别?

答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

四、写出下面程序的运行结果 1、 import java.io.*; public class abc

{

public static void main(String args [ ]) {

AB s = new AB(\ System.out.println(s.toString( )); } }

class AB { String s1; Strings2;

public AB(String str1, String str2) { s1 = str1; s2 = str2; }

public String toString( ) {

return s1+s2; } }

运行结果: Hello!I love JAVA

2、 import java.io.* ; public class abc {

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 < a.length ; i ++) if ( a[i]%3 = = 0 ) s += a[i] ;

System.out.println(\ } }

运行结果: S=180

3、import java.io.* ; public class abc {

public static void main(String args[ ]) {

System.out.println(\ } }

class SubClass extends SuperClass { int c;

SubClass(int aa, int bb, int cc) { super(aa, bb); c=cc; } }

class SubSubClass extends SubClass { int a;

SubSubClass(int aa, int bb, int cc) { super(aa, bb, cc); A = aa+bb+cc; }

void show() {

System.out.println(\

} }

运行结果:a=60 b=20 c=30 4、以下程序的输出结果为_Peter is17years old!________________。 public class Person { Stringname; intage;

publicPerson(String name, int age) { this.name = name; this.age = age; }

publicstatic void main(String[] args) { Person c = new Person(\

System.out.println(c.name + \\ } }

5、以下程序的输出结果为__课程号:101 课程名:ASP 学分:3___________________。 public class Course {

privateString cNumber; privateString cName; privateint cUnit;

publicCourse(String number, String name, int unit) {

cNumber = number; cName = name;

cUnit = unit; }

publicvoid printCourseInfo() {

System.out.println(\课程号:\课程名:\学分:\ } }

class CourseTest {

publicstatic void main(String[] args) { Course c;

c = new Course(\ c.printCourseInfo(); } }

6、以下程序的输出结果为__汤姆猫体重:20.0斤___________________。 public class Tom { privatefloat weight; privatestatic String name;

publicvoid setWeight(float weight) { this.weight = weight; }

privatevoid out() {

System.out.println(name + \体重:\weight + \斤\ }

publicstatic void main(String[] args) { Tom.name = \汤姆猫\ Tom cat = new Tom(); cat.setWeight(20); cat.out(); } }

7、以下程序的输出结果_姓名:Tom 年龄:15 家庭住址:金水区 电话:_66123456 学校:九中_______________。 public class Father {

Stringname, address, tel; intage;

publicFather(String name, int age) { this.name = name;

this.age = age; }

voidout() {

System.out.print(\姓名:\ System.out.print(\年龄:\ }

voidoutOther() {

System.out.print(\家庭住址:\ System.out.print(\电话:\ } }

class Son extends Father {

Stringschool;

publicSon(String name, int age) { super(name, age); }

voidout() {

super.out(); super.outOther();

System.out.println(\学校:\ }

publicstatic void main(String args[]) { Son son = new Son(\ son.address = \金水区\

son.school = \九中\ son.tel = \ son.out(); } }

8、下列程序的运行结果是____1 23 45_________________。 public class MyClass { inta[] = { 1, 2, 3, 4, 5 };

voidout() {

for (int j = 0; j < a.length; j++) System.out.print(a[j]+ \ }

publicstatic void main(String[] args) { MyClass my = new MyClass(); my.out(); } }

五、程序填空题 1.public class Sum{

publicstatic void main(String [] args){ int j=10;

System.out.println(\ calculate(j);

System.out.println(\ }

static void calculate (int j){

for (int i = 0;i<10;i++) j++;

System.out.println(\ } }

输出结果为:

j is : (1) 10 j in calculate() is : (2) 20 At last j is : (3) 10

2.按要求填空

abstract class SuperAbstract{ voida(){…} abstractvoid b(); abstractint c(int i);

}

interface AsSuper {

voidx(); }

abstract class SubAbstract extendsSuperAbstract implements AsSuper {

public void b(){…} abstractString f(); }

public class InheritAbstract extendsSubAbstract{ publicvoid x(){…} publicint c(int i ) {…} publicString f(){…}

publicstatic void main(String args[]){

InheritAbstract instance=newInheritAbstract(); instance.x(); instance.a(); instance.b(); instance.c(100);

System.out.println(instance.f()); } }

在以上这段程序中:

抽象类有:SuperAbstract和 (1) (写出类名)SuperAbstract

非抽象类有: (2) (写出类

名)InheritAbstract接口有: (3) (写出接口名)AsSuper

AsSuper中的x()方法是 抽象 (4) 方法,所以在InheritAbstract中必须对它进行 覆盖和实现 (5)

3.按注释完成程序 public class Leaf {

privateint i = 0; //此属性值用于检验

Leafincrement(){ //定义方法increment(),返回值是Leaf类的对象

i++;

return this (1) ;//将当前对象的地址作为返回值返回 }

voidprint() {

System.out.println(\ }

publicstatic void main(String args[]){

Leaf x = new Leaf() (2) ; //创建Leaf类的对象x

x.increment().increment().increment().print();

}//多次调用方法increment(),返回的都是x的地址,i 值表示调用次数 }

输出结果为 i = 3 (3)

五、程序阅读题

1、阅读下面的程序代码,并回答问题(u问3分,v问3分,共6分)。

String s1 = new String(\ String s2 = new String(\ boolean b1= s1.equals(s2); boolean b2 = s1== s2; System.out.print(b1+\ \

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

Top