2024年3月28日发(作者:)

习 题

一、选择题

1. 如下哪个字符串是Java中的合法标识符?( A )

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

2. Java中main()函数的返回值是什么类型? ( D )

A、String B、int C、char D、void

3. 下列哪些语句关于Java内存回收的说明是正确的? ( C )

A、程序员必须创建一个线程来释放内存

B、内存回收程序允许程序员直接释放内存

C、内存回收程序负责释放无用内存

D、内存回收程序可以在指定的时间释放内存对象

4. 以下关于继承的叙述正确的是( B )。

A、在Java中一个类只能实现一个接口

B、在Java中类只允许单一继承

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

D、在Java中接口只允许单一继承

5. Java Applet中的paint()方法使用哪种类型的参数? ( A )

A、Graphics B、Graphics2D

C、String D、Color

6. 在使用interface声明一个接口时,只可以使用( D )修饰符修饰该接口。

A、private B、protected

C、private protected D、public

7. 下面( B )函数是public void example( ){...}的重载函数?

A、public void example( ){...}

B、public void example( int m ){...}

C、public void example2( ){...}

D、public int example ( ){...}

8. 在浏览器中执行applet 程序,以下选项中的( A )方法将被最先执行。

A、init() B、start() C、destroy() D、stop()

9. 有程序片段如下,以下表示式的结果为true的是( B )。

Float s=new Float(0.1f);

Float t=new Float(0.1f);

Double u=new Double(0.1);

A、s= =t B、(t)

C、(s) D、(u)

10. 关于异常的含义,下列描述中最正确的一个是( C )。

A 程序编译错误 B 程序语法错误

C 程序运行时的错误 D 程序编译和运行时发生的错误

11. 类 Panel 默认的布局管理器是( B )。

A、BorderLayout B、FlowLayout

C、GridLayout D、CardLayout

12. 下面哪个方法与applet的显示无关? ( B )

A、update() B、draw()

C、repaint() D、paint()

13. 已知如下代码:

public class Test{

public static void main ( String arg[] )

{

long a[] = new long[10];

n ( a[6] );

}

}

请问哪个语句是正确的? ( B )

A 程序输出 null B 程序输出 0

C 因为long[]数组声明不正确,程序不能被编译

D 程序被编译,但在运行时将抛出一个ArrayIndexOutOfBoundsException异常

14. Java语言不是( B )

..

A、高级语言

C、结构化设计语言

public class ArrayTest {

public static void main(String args[]) {

try {

int x[]=new int[-5];

n("此行将无法被执行!");

} catch(NegativeArraySizeException e) {

n("exception: 数组下标不能为负数。");

}

}

}

B、编译型语言

D、面向对象设计语言

15. 关于以下程序段的说明正确的是 ( C )

A、编译通过,输出:

此行将无法被执行!

B、编译通过,输出:

此行将无法被执行!

exception: 数组下标不能为负数。

C、编译通过,输出:

exception: 数组下标不能为负数。

D、编译不能通过

16. Java源文件和编译后的文件扩展名分别为( B )。

A、.class和 .java B、 .java和 .class

C、.class和 .class D、 .java和 .java

17. 以下有关构造函数的说法,正确的是:(A )。

A、一个类的构造函数可以有多个

B、构造函数在类定义时被调用

C、构造函数只能由对象中的其它方法调用

D、构造函数可以和类同名,也可以和类名不同

18. 为类Employee中的一个无形式参数且无返回值的方法method书写方法头,以便使用

类名Employee作为前缀就可以调用它(即可以通过类名调用方法method),该方法头

的形式为( A )。

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

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

19. 下列代码的执行结果是: ( C )。

public class Test5{

public static void main(String args[]){

String s1=new String("hello");

String s2=new String("hello");

(s1==s2);

(",");

n((s2));

}

}

A、true,false

C、false,true

B、true,true

D、false,false.

D、sizeof

20. 下列不是Java关键字的是( D )。

A、 final B、 finally C、null

21. 以下( C )是包中的一个兼有输入输出功能的类。

A、Object

B、Serializable

C、RandomaccessFile

D、中不存在这样的类

22. 下面哪个语句正确地声明一个整型的二维数组? ( D )

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

B int a[100][100] = new int[][];

C int []a[] = new int[100][100];

D int a[][] = new int[100][100];

23. 编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名

为( B )。

A .java

C .html D .exe

24. 为读取的内容进行处理后再输出,需要使用下列哪种流? ( D )

A Filestream B Pipestream C Randomstream D Filterstream

25. 下列方法中可以用来创建一个新线程的是。( C )

A 实现le 接口并重写 start()方法

B 实现le 接口并重写 run()方法

C 继承 类并重写 run()方法

D 实现 类并实现 start()方法

26. 给出如下初始化语句

String s1=new String(“Hello”);

String s2=new String(“there”);

String s3=new String();

以下哪种操作是合法的? ( A )

A s3=s1+s2;

B s3=s1-s2;

C s3=s1&s2;

D s3=s1&&s2;

27. 容器Panel和Applet缺省使用的布局编辑策略是( B )

A BorderLayout B FlowLayout

C GridLayout D CardLayout

28. 给出如下代码:

class Test{

private int m;

public static void fun() {

//

}

}

如何使成员变量m 被函数fun()直接访问? ( C )

A将private int m 改为protected int m

B将private int m 改为 public int m

C将private int m 改为 static int m

D将private int m 改为 int m

29. 以下有关类的继承的说明中正确的是:( D )

A子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性

B子类只能继承父类的方法,不能继承父类的属性

C子类只能继承父类的非私有属性,不能继承父类的方法

D子类不能继承父类的私有属性

30. 以下语句有语法错的是:( A )

A int x=1;y=2;z=3 B for (int x=10,y=0;x>0;x++);

C while (x>5); D for(; ;);

二、

简答题

1、 请说明this,super,final各自的作用。

this:①指代调用方法的当前对象;②在构造函数内使用this用于指代另外一个构造函数。

super:提供了一种调用父类构造函数的方法。

final:使得某个变量值只能被引用,而不能修改。

2、 试解释方法重构(方法覆盖)和方法重载的区分。

①方法的覆盖出现在父类与子类之间,并且方法的特征要完全相同。

②方法的重载可以出现在一个类中,也可以分别出现在父类与子类中,方法的特征一定不完

全相同。

3、 请解释面向对象程序设计相关的几个概念:继承、 多态、 重载。

继承:将相关类组成层次结构,允许新类从已存在的类中派生,通过保留它们的属性(即实

例变量)和方法,并根据自己的要求添加新的属性的方法。

多态:接口的多种不同的实现方式。

重载:在一个类定义中,可编写几个同名的方法,但是只要它们的签名参数列表不同,Java

就会将它们看做唯一方法。

4、 请说明抽象类和接口的异同点。

抽象类:一种类,它不能实例化为一个对象,而只表示一种抽象的概念,继承它的子类可以

对其进行具体实现,这种类中往往包含了抽象方法。

接口:就是一系列常量和空方法的集合,它提供了多个类共有的方法,但不限制每个类如何

实现这些方法。

相同点:

①二者都包含空方法,都必须在实现接口或继承抽象类的子类中具体实现这些方法。

②由于二者都包含空方法,所以不能用new关键字来创建这两种类型的对象。

③类之间具有继承关系,接口之间也可以具有这种关系,一个接口可以继承一个或多个接口。

④接口和类一样可以具有public属性。在interface前加上public关键字,表示各个包中的类

均可以实现这个接口,反之,只有同一个包中的类才可以实现这个接口。

不同点:

①抽象类在定义空方法时,其名称前必须加abstract关键字,而在接口中不需要。

②在抽象类中,除空方法外,还可以定义实例变量和非空方法;而在接口中,只能定义常量

和空方法。

③接口允许多继承。一个接口可以继承多个接口,实现接口的类也可以同时实现多个接口,

只要在这个类中对每个接口的方法都有具体的实现,但Java的类仅支持单继承。

5、 实例变量与局部变量的区别

实例变量:也叫对象变量,在类中定义的没加static 的变量,与类变量不同,类变量是所有

对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果,而实例变量则属

对象私有,某一个对象将其值改变,不影响其他对象。

局部变量:在方法中定义的只在特定的方法中可以访问的变量。

区别:

①局部变量定义在方法里面,实例变量定义在类以内方法之外;

②局部变量只能在定义他的方法里面使用,直接调用变量名就行,实例变量至少可以在整个

类内使用,使用时必须用对象去调用;

③局部变量使用之前必须初始化,实例变量不需要赋初值,系统会给默认的初值;

④局部变量在同一个方法里面不能重名,局部变量和实例变量可以重名,在方法里面采用就

近原则,以局部变量为准;

⑤实例变量属于对象,它描述了对象的属性,随着对象的存在而存在,局部变量是随着方法

的调用而存在,一旦方法调用结束,局部变量也就消亡了。

三、

阅读程序

1. 以下程序段的输出结果为 5 6 7 8 9 。

public class TestArray

{

public static void main(String args[ ]){

int i , j ;

int a[ ] = { 5,9,6,8,7};

for ( i = 0 ; i < -1; i ++ ) {

int k = i;

for ( j = i ; j < ; j++ )

if ( a[j]

int temp =a[i];

a[i] = a[k];

a[k] = temp;

}

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

(a[i]+" ");

n( );

}

}

2. 编程填空(将横线上所缺的内容补充完整)

下列程序中(),指定变量b=50为字节类型,变量f=0.55F为单精度实型,变

量k=0xfffL为64位整型,并将该三个变量打印输出,请将程序补充完整。(每空1分)

import .*;

public _______ Assign

{

public static void main(String args[])

{

_______b=50;

_______f=0.55F;

_______k=0xfffL;

n("b="+b);

n("f="_______);

n("k="+k);

}

}

3. 写出以下程序的运行结果 no Exception;finally;catch;finally 。

public class TryCatchFinally{

static void Proc( int sel ){

try{

if( sel==0 ){

n("no Exception ");

}

}

public static void main( String args[] ){

}

}

4. 阅读以下程序,写出输出结果 Dog 程序方法不能被继承。

class Animal{

Animal( ){ ("Animal "); }

}

public class Dog extends Animal{

Proc( 0 ); Proc( 1 );

else if( sel==1 ){ int i=0; int j=4/i;}

}

return;

catch( ArithmeticException e ) {

n("Catch "); }

catch( Exception e ) {

n("Will not be executed");}

finally{

n("finally"); }

Dog( ){ ("Dog "); }

public static void main(String[] args){

Dog snoppy= new Dog( );

}

}

5. 阅读以下程序:

class Exp1

{

public static void main(String[] args)

{

String s,s1="";

char c;

s=args[0];

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

{

c=(i);

if(c>='a' && c<='z'){

s1=s1+rCase(c);

}else{

s1=s1+rCase(c);

}】

}

}

}

n(s1);

若在dos命令行输入:java Exp1 DEFabc,则输出为 defABC 。

6. 阅读下面的程序,并回答问题。

import .*;

public class Test {

public static void main(String args[]) throws IOException {

BufferedReader buf=new BufferedReader(

new InputStreamReader());

while(true) {

String str=ne();

if(("quit"))

break;

int x=nt(str);

n(x*x);

}

}

}

编译运行上面的程序:

1)从键盘输入10,回车后输出的结果为 100 。

2)从键盘输入exit,回车后程序能正确执行吗?为什么?不能,exit不能转换成数字 。

四、编程题

1、 写出一个Point(点)类,该类具有x, y(表示点的横、纵坐标)两个属性,并定义两个构

造方法,一个无参数,将x,y均设置为0,另一对坐标值为参数,设置x,y为给定坐标值。

在类中设计一个show方法,实现输出该类对象的坐标值。

2、 假设我们从键盘输入一段英文,统计这段文字中单词的个数,并输出其中由四个字母组

成的单词。

3、 从键盘输入一行文本,显示其中各元音字母出现的次数。

4、

5、 编写一个程序用选择法对数组a[]={20,10,50,40,30,70,60,80,90,100}进行由大到小

的排序。

6.