最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

JAVA期末考试试卷和习题及答案汇总

IT圈 admin 34浏览 0评论

2024年4月1日发(作者:濯旎旎)

JAVA期末考试试卷和习题及答案汇总

一、单项选择题

1.下面哪个不是Java中的容器? B

A、 ScrollPane B、Canvas C、Applet D、Dialog

C、repaint()

2.下面哪个方法与applet的显示无关? A

A、draw() B、 update()

D、paint()

3.以下哪个方法用于定义线程的执行体? C

A、 start() B、init() C、run() D、synchronized()

4.当Frame改变大小时,放在其中的按钮大小不变,则使用如下哪种布局方式?A

A、 FlowLayout B、CardLayout C、BorderLayout D、GridLayout

5.有如下代码段:

1)

2) { if(unsafe()){//do something…}

3) else if(safe()){//do the other…}

4) }

其中,方法unsafe() 将抛出IOException, 请问可将以下哪项填入第1行?D

A、public IOException methodName()

B、public void methodName()

C、public void methodName() throw IOException

D、public void methodName() throws IOException

6.以下哪个关键字可以用来对对象加互斥锁?B

A、transient B、synchronized C、 serialize D、static

7.编译并运行以下程序,以下描述哪个选项是正确的C

1. class A{

2. protected boolean equals(){

3. return ();}

4. }

A、编译通过运行无异常 B、编译通过但运行时出错

C、行2出错,不能成功编译

A、private

D、不能成功编译,行3出错

D、public

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

B、protected C、private protected

9.Java的字符类型采用的是Unicode编码方案,每个Unicode码占用( B)个

比特位。

A、8 B、16 C、32 D、64

10.在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般

需要在程序的开头写上( D )语句。

A、import .* ; B、import .* ;

C、import .* ; D、import .* ;

11.以下关于构造函数的描述错误的是(A)。

A、构造函数的返回类型只能是void型。

B、构造函数是类的一种特殊函数,它的方法名必须与类名相同。

C、构造函数的主要作用是完成对类的对象的初始化工作。

D、一般在创建新对象时,系统会自动调用构造函数。

12.有程序如下,关于程序的描述哪个是正确的?(C )

public class Person{

static int arr[] = new int[10];

public static void main(String a[])

{ n(arr[1]); }

}

A、编译将产生错误 B、编译时正确,但运行时将产生错误

C、正确,输出0 D、正确,输出 null

13.有语句String s=”hello world”; ,以下操作哪个是不合法的?( B)

A、int i=();B、s>>>=3;C、String ts=(); D、String t=s+”!”;

14.给出如下代码:

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

15. Java application中的主类需包含main方法,main方法的返回类型是什

么?(D)

A、int B、float C、double D、void

16.有以下方法的定义,请选择该方法的返回类型(D)。

ReturnType method(byte x, double y)

{

return (short)x/y*2;

}

A、byte B、short C、int D、double

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

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

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

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

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

18.在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般

需要在程序的开头写上(D)语句。

A、import .* ; B、import .* ;

C、import .* ; D、import .* ;

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

A、BorderLayout B、FlowLayout C、GridLayout D、CardLayout

20.设有下面两个赋值语句:

a = nt(“123”);

b = f(“123”).intValue();

下述说法正确的是(D)

A、a是整数类型变量,b是整数类对象。B、a是整数类对象,b是整数类型变量。

C、a和b都是整数类对象并且值相等。D、a和b都是整数类型变量并且值相等。

21.编译并运行以下程序,以下描述哪个选项是正确的(C )。

1. class A{

2. protected String toString(){

3. return ng();}

4. }

A、编译通过运行无异常 B、编译通过但运行时出错

C、行2出错,不能成功编译 D、不能成功编译,行3出错

22.有以下程序片段,下列哪个选项不能插入到行1。(D )

1.

class Interesting{

3.//do sth

4. }

A、import .*; B、package mypackage;

C、class OtherClass{ } D、public class MyClass{ }

D、void

23.以下哪个不是Java的关键字?(A)

A、TRUE B、const C、super

24.关于以下application的说明,正确的是( C)。

1. class StaticStuff

2. {

3. static int x;

4. static { x+=5;}

5. public static void main(String args[ ])

6. {

7. n(“x=” + x);

8. }

9. static { x/=5;}

10.}

A、4行与9行不能通过编译,因为缺少方法名和返回类型

B、9行不能通过编译,因为只能有一个静态初始化器

C、编译通过,执行结果为:x=1

D、能通过编译,但程序运行结果不可预知,因为变量x没有初始化

25.FilterOutputStream是BufferedOutputStream、DataOutputStream及

PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数

类型?B

A、OutputStream B、File C、InputStreamD、BufferedOutputStream

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

A、private B、protected C、private protected D、public

27.有程序片段如下,以下哪个表示式的结果为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)

=========================================================

1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码

文件的扩展名为(B )。

A. java B. class

C. html D. exe

2、以下哪一个不是JAVA的标准数据流( D)。

A. 标准输出数据流 B. 标准输入数据流

C. 标准错误数据流 D. 标准运算数据流

3、. class 和.java 文件的含义分别是:(A)

A. Java 目标码文件和源文件; B. Java 可执行文件和目标码文件;

C. Java 源文件和目标码文件; D. Java 源文件和Java 平台配置文件;

4、 面板的边框有哪几种? (D)

A. 面板没有边框; B. 仅有单线边框;

C. 仅有黑色的边框; D. 面板缺省没有边框,但可以设置单线、斜坡、不光

滑等多种线形,可以设置边框的颜色、宽度等,还可以设置边框与内容之间的举

例等;

5、 以下几个命名方法,不符合Java 命名规范的是:(D)

A. 类的名称:MyClassName; B. 变量的名称:myArray;

C. 常量的名称:PI_VALUE; D. 成员函数的名称:GetName;

6、 在下面的代码中,break语句的作用是:(C)

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

if (aData[i] = = TargetData) {

FoundID = i;

break;

}

A. 退出if 程序块; B. 退出此次循环,直接进入下一次循环;

C. 退出整个循环; D. 退出整个函数;

7、 以下项中,不属于成员变量的定义部分的是:D

A. 访问级; B. 变量名称; C. 变量类型; D.变量的初始化方式;

8、以下关于异常捕获的原则中,错误的是(D )

A RuntimeException 可以不被捕获,Java会自动处理运行期异常。

B 先列出子类,后列出父类。

C 先列出具体的异常类,后列出通用的异常类。

D Exception类必须出现,而且必须作为catch块中第一个匹配的类。

9、 Java的一个重要特点是结构中立性,这种结构中立性表现在(C)

A 用Java编写的源程序无需编译,直接通过Java平台解释执行。

B Java源程序在不同的硬件和操作系统下,直接编译成该硬件和操作系统

能够运行的程序并运行。

C Java源程序编译成一种结构中立的目标文件格式,再有Java平台在不同

的硬件和操作系统下运行。

D Java源程序编译成一种通用的可执行程序,现在的硬件和操作系统都支

持这种通用的可执行程序。

10、在Swing中,一下列出的面板的作用中,错误的是(C).

A. 放置并排列组件B显示背景图案;C接收事件;D显示面板的边框;

11、.在Swing中,如何设置组件的边框?( C)

A通过根窗格的setBorder函数设置某各组件的边框;

B通过内容窗格的setBorder函数设置某各组件的边框;

C通过组件的setBorder函数设置;

D通过框架的setBorder函数设置某各组件的边框;

12、以下关于框架和其他窗口之间的关系中,错误的是(D)

A 对话框必须依附于某个框架

B 当框架最小化时,所有依附于它的窗口也会最小化

C 框架是一个程序的主窗口,每个具有图形界面的程序都至少要有一个框架

D 内部框架也是顶级容器组件

13、创建并显示框架的步骤中,错误的是(A)

A 将框架对象与入口类相连接

B 在框架中加如组件

C 创建一个框架对象

D 调用框架对象的setVisible函数显示框架

14、如何在框架中显示标题?(C )

A 调用根窗格的set Title 函数显示

B 调用内容窗格的setTitle函数显示

C 调用框架对象的setTitle函数显示

D 调用框架对象的Border对象的setTitle函数显示

15、下列关于Java语言的特点,描述错误的是(C)

A.Java是跨平台的编程语言 B.Java支持分布式计算

C.Java是面向过程的编程语言 D.Java支持多线程

16、下述概念中不属于面向对象方法的是D___。

A.对象、消息 B.继承、多态 C.类、封装 D.过程调用

17、结构化程序设计所规定的三种基本控制结构是 ( C )

A.输入、处理、输出 B.树形、网形、环形

C.顺序、选择、循环 D.主程序、子程序、函数

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

A.default String s; B.public final static native int w( )

C.abstract double d; D.Abstract final double hyperbolicCosine( )

19、Applet可以做下列哪些操作?C

A.读取客户端文件 B.在客户端主机上创建新文件

C.在客户端装载程序库 D.读取客户端部分系统变量

20、下列关于for循环和while循环的说法中哪个是正确的? c

A.while循环能实现的操作,for循环也都能实现

B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结

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

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

====================================================================

1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码

文件的扩展名为( B )。

A .java 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、在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的

( D )方法来完成一些画图操作。

A. start( ) B. stop( ) C. init( ) D. paint( )

4、不允许作为类及类成员的访问控制符的是( C )。

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

5、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类

名AB作为前缀就可以调用它,该方法头的形式为( A )。

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

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

*********************************************************************

1、Java中复合数据类型不包括(D)

A.类类型 B.数组 C.接口类型 D.指针

2、请从四个选项中选择答案,下列代码的执行结果是:(C)

Public class Test{

Public static void main(String args[]){

Float t=9.0f;

Int q=6;

n((t++)*(--q));

}

}

A.40 B.40.0 C.45.0 D.36.0

3、下列关于修饰符混用的说法,错误的是(D)

ct 不能与final 并列修饰同一个类

B.abstract类中可以有非abstract的方法

C.普通类(非abstract类)中不能有abstract方法

方法中能处理非static的属性

4、关于被保护访问控制符protected修饰的成员变量,以下说法正确的是(A)

A.可以被该类自身、与它在同一个包中的其它类、在其它包中的该类的子类所

访问

B.只能被该类本身和该类的所有的子类访问

C.只能被该类自身所访问

D.只能被同一个包中的类访问

5、x=2,y=3,z=4,则表达式z*=y++*--x的值是(A)

A.12 B.24 C.16 D.3

6、以下赋值语句正确的是(D)

c1=”a” f1=3.22 b1=266 L1=0xAC8L

7、Java不支持多重继承,但我们可以通过(B)实现

A.多态 B.接口 C.覆盖 D.抽象类

8.已知类person是类student的父类,以下数组定义和赋值哪些是正确的(A)

A. person p[]=new person[3]; p[1]=new student();

B .student s[]=new person[3]; s[1]=new person();

C .person p[]= new student[3];p[1]= new person();

D .student s[]=new student[3];s[1]=new person;

9 编译之后,得到了三个字节码文件: ,

MyClasslittle$.class MyClass$.这表明(C)

s类中的两个方法:little和1

B. 中有三个类:MyClass、little和1

C. MyClass类中有两个内部类:一个是命名的little,另一个是匿名的1

D. MyClass、little和1,这三者没什么关系

10、main 方法是java Application 程序执行的入口点,关于main方法的方法

头以下(B)是合法的。

static void main() static void main(String arg[])

static int main(String[] arg) D. void main(String

arg[])

11、当编译和运行下面的代码会出现什么情况?(A)

Import .*;

Class ExBase{

Abstract public void martley()

}

Public class MyEx extends ExBase{

Public static void main(String argv[]){

DataInputStream fi=new DataInputStream();

Try{

ar();

}

Catch(IOEception e){

(0);

}

Finally{n(“Doing finally”);}

}

}

A.编译错误 B.可以运行,没有打印出”Doing finally”

C.可以运行,在打印出”Doing finally”后退出 D.在运行之后立即退出

12、当编译和运行下面的代码会出现什么情况?(D)

Public class Sandys{

Private int court;

Public static void main(String argv[]){

Sandys s=new Sandys(99);

n();

}

Sandys(int balleount){

court=ballcount;

}

}

A编译错误,变量court被定义为private

B编译错误,调用的s没有被初始化

C可以编译和运行,没有输出结果

D可以编译和运行,输出结果为99

13、给出下面的代码:

Class Base{}

Class Agg extends Base{

Public String getFields(){

String name=”Agg”;

Return name;

}

}

Public class Avf{

Public static void main(String argv[]){

Base a=new Agg();

//Here

}

}

当把下面的代码添加到注释“/Here”后面,程序的输出结果是”Agg”(D)

n(lds()) B. n()

n((Base)lds())

n(((Agg)a).getFields())

14、当编译和运行下面的代码会出现什么情况?(A)

Abstract class Base{

Abstract public void myfunc();

Public void another(){

n(“Another method”);

}

}

Public class Abs extends Base{}

Public static void main(String argv[]){

Abs a=new Abs();

d();

}

Public void myfunc(){

n(“My Func”)

}

A可以编译和运行,输出的结果是”My func”

B出现编译错误:Base类中没有抽象方法

C可以编译,但运行是提示Base类中没有抽象方法

D出现编译错误,Base类中的方法myfunc没有方法体

15、编译和运行下面的代码会出现(D)

Import .*;

Class Base{

Public void amethod()throws FileNotFoundException{}

}

Public class ExcepDemo extends Base{

Public static void main(String argv[]){

New ExcepDemo();

}

Public void amethod(){}

Protected ExcepDemo(){

try{

BufferedReader inputStream=new BufferedReader(new InputStreamReader);

n(“Pausing”);

ne();

n(“Contimuing”);

d();

}catch(IOException ioe){}

}

A编译错误,因为构造方法被声明为protected

B编译错误,因为方法amethod没有抛出异常

C运行时错误,因为方法amthod没有抛出异常

D可以编译和运行,输出的结果是:Pausing…Continuing

其中…表示等待用户的键盘输入

17、以下程序的输出结果是(C)

class Aclass{

void go(){n(“Aclass”);}

}

public class Bclass extends Aclass{

Void go{

n(“Bclass”);

}

Public static void main(String args[]){

Aclass a= new Aclass();

Aclass al=new Bclass();

();

();

}

}

A、Aclass

Aclass

B、Bclass

Bclass

C、Aclass

Bclass

D、Bclass

Aclass

18、看以下程序

Boolean a=false;

Boolean b=true;

Boolean c=(a&&b)&&(!b);

Int result=c==false?1:2;

这段程序执行完后,c与result的值是:(A)

Ac=false;result=1; Bc=true;result=2;

Cc=true;result=1; Dc=false;result=2;

19、下面哪个单词是Java语言的关键字(B)

ed

20、switch语句(A)

A.都可以用if-else if结构实现

B.都不可以用if-else if结构实现

C.有的可以用if-else if结构实现

D.大部分不可以用if-else if结构实现

21、在异常处理中,如释放资源、关闭文件等善后操作由(C)来完成。

A. try子句 B. catch子句 C. finally子句 D. throw子句

22、下面哪个是Java语言中正确的标识符( C)

A. 3com B. import C. that D. this

23、下面哪个修饰符修饰的方法只能被本类中的其他方法使用(C)

A. protected B. static C. private D.

24、下面哪条语句定义了5个元素的数组(A)

A. int[]a={22,23,24,25,12};

B. int a []=new int(5);

C. int[5] array;

D. int[] arr;

25、下面哪项可以得到数组元素的个数,Java中定义数组名为abc。( B )

A. () B. C. len(abc) (abc)

26、下面哪个修饰符修饰的变量是所有同一个类生成的对象共享的(C)

A. public B. private

27、下面关于构造方法的说法不正确的是(B)

A、构造方法也属于类的方法,用于创建对象的时候给成员变量赋值。

B、构造方法不可以重载。

C、构造方法没有返回值

D、构造方法一定要和类名相同

28、监听事件和处理事件(A)

A、都由Listener完成 B、都由相应事件Listener处登记过的构件完成

C、由Listener和构件分别完成 D、由Listener和窗口分别完成

29、如果希望所有的控件在界面上均匀排列,应使用下列那种布局管理器?(B)

A. BoxLayout B. GridLayout Layout uLayout

30、给出如下代码:

Class Test{

Private int m;

Public static void fun() {

// some code…

}

}

如何使成员变量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

31、有个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为

前缀就……法头的形式为(A)

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

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

32、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码

文件的扩展名为(B)

C .html D .exe

33、如果只要让类中的成员变量可以被同一包访问,则使用如下哪个访问控制

符?(D)

Aprivate;BPublic;CProtected;D不使用访问控制符

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

A start();B init();C run();D main();

35、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机

制(B)A、 安全性 B、多线程 C、跨平台 D、可移植

36、为实现多线程之间的通信,需要使用下列哪种流才合适(D)

AFilter stream;BFile stream

CRandom access stream;DPipedInputStream和PipedOutputStream

37、函数重载是指(A)

A两个或两个以上的函数取相同的函数名,但形参的个数或类型不同

B两个以上的函数取相同的名字和具有相同的形参个数和类型

C两个以上的函数名字不同,但形参的个数或类型相同

D两个以上的函数取相同的函数名,并且函数的返回类型相同

38、构造方法何时被调用(B)

A、类定义时 B、创建对象时C、调用对象方法时 D、使用对象的变量时

39、Java中哪个类提供了随机访问文件的功能(A)

A.RandomAccessFile类 File类C.File类 File类

40、当方法遇到异常又不知如何处理时,应该怎么做(B)

A.捕获异常 B.抛出异常C.声明异常 D.嵌套异常

=====================================================================

=====================================================================

=====================================================================

二、填空题:(10小题,每题1分,共10分)

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

自节码 和解释运行字节。

2、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,

则类MyApplet必须是 Applet 类的子类并且存储该源程序文件的文件名为

3、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK

编译器 编译该源程序文件将产生 3 个文件名与类名相同

而扩展名为 .class 的字节码文件。

4、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode

码占 用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占用 2

字节内存空间。

5、使用数组时,下标表达式是整型表达式,下标的范围为 0 至数组长度减1

6、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 true 和 false 。

8、创建一个名为 MyPackage 的包的语句是 package MyPackage ; 该语

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

9、在Java程序中,通过类的定义只能实现 单 重继承,但通过接口的定义

可以实现 多重继承关系。

10、在文件操作中,public String getName()功能是 得到文件名。

public String getAbsolutePath()功能是 返回文件绝对路径。

==================================================================

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

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

2、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,

则类MyApplet必须是 Applet 类的子类并且存储该源程序文件

的文件名为 MyApplet 。

3、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK

编译器 编译该源程序文件将产生 3 个文件

名与类名相同而扩展名为 . class 的字节码文件。

4、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode

码占用 2 字节内存空间,这样,无论是中文字符还是英文字符,都

是占用 2 字节内存空间。

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

6、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 true 和

false 。

7、 抽象(abstract)方法 方法是一种仅有方法头,没有具体方法体和操

作实现的方法,该方法必须在抽象类之中定义。 最终(final)方法 方法是不

能被当前类的子类重新定义的方法。

8、创建一个名为 MyPackage 的包的语句是 package

MyPackag ,

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

9、设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 ,

70}; 则执行以下几个语句后的输出结果是 120 。

int s = 0 ;

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

if ( i % 2 = = 1 ) s += MyIntArray[i] ;

n( s );

10、在Java程序中,通过类的定义只能实现 单 重继承,但通过接口的

定义可以实现 多 重继承关系。

====================================================

三、判断题。

1Java语言是平台无关的语言。T

2类的静态方法中可以访问该类的非静态数据成员.F

3Java中方法调用时参数传递都是按值传递的,因此从方法中退出时,参数的值

是不会变的。T

4覆盖方法所抛出的异常不能比原方法更多。T

5Final 方法不能被覆盖。T

6抽象类中一定包含抽象方法。F

7接口中的方法必须是抽象方法。T

8在方法定义中,所以可能发生的异常都必须用try{} catch(){}捕捉。F

9Java支持多重继承。F

10Final修饰的类不能派生子类。T

11覆盖的同名方法中,子类方法不能比父类方法的访问权限更严格。T

12不能在静态方法中使用this.T

13抽象类中不能创建对象。T

14一个类可以实现多接口。T

15接口中可以包含非静态成员。F

16不论是否捕捉到异常try{}catch(){} final{}语句中finally块中的代码总

要被执行。T

17一个类实现一个接口,则该类必须实现接口中的所有方法。F

18线程使用sleep方法去休眠后可以使用notify方法唤醒。F

19线程使用sleep方法休眠是会释放该线程同步锁定的对象。F

20Final类中的属性和方法都必须是final的。F

1、Java中的引用变量需要初始化,简单变量可以不进行初始化( x )

2、子类可以继承父类的除私有成员以外的其它所有成员。 ( v )

3、Java只支持单继承,也就是说子类只能有一个直接父类。(v )

4、框架是一个程序的主窗口,它是顶级容器。(v)

5、关闭框架时,缺省地也会关闭整个应用程序。(x)

6、Java可以设置程序的界面外观,即可以让程序在不同操作系统下按照系统特

有的外观风格显示,也可以将风格统一。( v)

7、中间容器,原子组件,菜单栏,工具栏等都直接放在顶级容器下( x)

8、++op运算符的作用是先将变量的值加1再返回变量的值(v)

9、为了不影响程序的正常运行,Javadoc命令全部嵌入在注释语句中,以“/**”

开头,以“*/”结尾。(v)

10、标签是最常用的组件,它的作用是在界面上显示一行文字,标签也可以显示

图片,或者即显示图片也显示文字。( v )

1即使一个类中未显式定义构造函数,也会有一个缺省的构造函数,缺省的构造

函数是无参函数,函数体为空。

( 对 )

2在Java的方法中定义一个常量要用const关键字。

( 错 )

3在异常处理中总是将可能产生异常的语句放在try块中,用catch子句去处理

异常,而且一个try块之后只能对应一个catch语句。

( 错)

4Applet是一种特殊的Panel,它是Java Applet程序的最外层容器。

( 对 )

5一个线程对象的具体操作是由run()方法的内容确定的,但是Thread类的run()

方法是空的,其中没有内容;所以用户程序要么派生一个Thread的子类并在子类

里重新定义run()方法,要么使一个类实现Runnable接口并书写其中run()方法

的方法体。 ( 对 )

6Java的字符类型采用的是Unicode编码,但所占字节由具体软硬件环境决定。

( 错 )

7所有的鼠标事件都由MouseListener监听接口的监听者来处理。

( 错 )

8Java语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。

( 对 )

9如果p是父类Parent的对象,而c是子类Child的对象,则语句p=c是正确

的。 ( 错 )

10Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字

free。 ( 错 )

11由继承性可知,程序中子类拥有的成员数目一定大于等于父类拥有的成员数

目。 (错 )

12静态初始化器是在其所属的类加载内存时由系统自动调用执行。

( 对 )

13 Applet是一种特殊的Panel,它是Java Applet程序的最外层容器。

( 对 )

14注释的作用是使程序在执行时在屏幕上显示//之后的内容。

( 错 )

15在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语

句,若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放

在前面。 ( 对 )

=====================================================================

=====================================================================

====================================================================

四、简答

1比较接口与抽象类的共同点和不同点.什么情况下应采用接口,什么情况下应

采用抽象类.

答:接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数

和返回值。接口方法不能包含任何实现,CLR允许接口可以包含事件、属性、索

引器、静态方法、静态字段、静态构造函数以及常数。 如果创建的功能将在大

范围的全异对象间使用,则使用接口。

抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可

以提供非抽象方法。抽象类不能实例化,必须通过继承由派生类实现其抽象方法。

相同点:都不能被直接实例化,都可以通过继承实现其抽象方法。 都是面向抽

象编程的技术基础,实现了诸多的设计模式。

不同点 :接口支持多继承;抽象类不能实现多继承。 接口只能定义抽象规

则;抽象类既可以定义规则,还可能提供已实现的成员。 接口是一组行为规范;

抽象类是一个不完全的类,着重族的概念。 接口可以用于支持回调;抽象类不能

实现回调,因为继承不支持。 接口只包含方法、属性、索引器、事件的签名,

但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的

方法。 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,

Struct就可以继承接口,而不能继承类。

2类的加载和构造方法的调用顺序

类的加载的顺序:先递归地加载父类的静态成员/代码块(object的最先);

再依次加载到本类的静态成员。

调用构造方法:先递归地调用父类的构造方法;默认调用父类空参的同,也

可在第一行写明调用用父类某个带参的。再依次到本类的构造方法;

先初始化父类的静态代码--->初始化子类的静态代码-->

==

==(创建实例时,如果不创建实例,则后面的不执行)初始化父类的非静态代码

---> ==

==初始化父类构造函数--->初始化子类非静态代码--->初始化子类构造函数

==

3什么是重载,什么是覆盖,有什么区别和共同点?

答:重载是指在同一个类中定义了多个名字相同而内容不同的成员方法;覆

盖则是指在子类中定义了与父类具有相同名字的成员方法。

重载与覆盖的区别在于:重载是存在于同一个类的不同方法之间的多态关

系,它们主要通过参数表中参数的个数、参数的数据类型和参数的顺序等方面的

不同来区分;面覆盖是存在于父类与子类之间的多态关系,它们在引用时通过指

出所属类的类名来区分。

=====================================================================

=====================================================================

====================================================================

五.程序阅读题

1.写出以下程序的运行结果。(54321)

public class TestArray

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

int i , j ;

int a[ ] = {1,3,2,5,4};

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

int k = i;

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

if ( a[j]>a[k] ) k = j;

int temp =a[i];

a[i] = a[k];

a[k] = temp; }

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

(a[i]+" ");

n( ); }

}

2.写出以下程序的功能。(在屏幕上输出文件的内容)

import .*;

class FileIODemo{

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

int b;

FileInputStream fileIn=new

FileInputStream(“”);

while((b=())!=-1){

((char)b); } }

}

3.写出以下程序的运行结果。Str0str1str2 str0str2

import .*;

public class Vec{

public static void main(String[] args) {

String[] s;

s=new String[2];

s[0]=new String("str1");

s[1]=new String("str2");

Vector v = new Vector();

for(int i = 0; i <2; i++) ment(s[i]);

ElementAt(new String("str0"),0);

Enumeration e = ts();

while(eElements())

(ement()+" ");

n();

Element("str1" );

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

(tAt(i) +" ");

n(); }

}

4.写出以下程序的运行结果。int

class OverloadDemo{

2024年4月1日发(作者:濯旎旎)

JAVA期末考试试卷和习题及答案汇总

一、单项选择题

1.下面哪个不是Java中的容器? B

A、 ScrollPane B、Canvas C、Applet D、Dialog

C、repaint()

2.下面哪个方法与applet的显示无关? A

A、draw() B、 update()

D、paint()

3.以下哪个方法用于定义线程的执行体? C

A、 start() B、init() C、run() D、synchronized()

4.当Frame改变大小时,放在其中的按钮大小不变,则使用如下哪种布局方式?A

A、 FlowLayout B、CardLayout C、BorderLayout D、GridLayout

5.有如下代码段:

1)

2) { if(unsafe()){//do something…}

3) else if(safe()){//do the other…}

4) }

其中,方法unsafe() 将抛出IOException, 请问可将以下哪项填入第1行?D

A、public IOException methodName()

B、public void methodName()

C、public void methodName() throw IOException

D、public void methodName() throws IOException

6.以下哪个关键字可以用来对对象加互斥锁?B

A、transient B、synchronized C、 serialize D、static

7.编译并运行以下程序,以下描述哪个选项是正确的C

1. class A{

2. protected boolean equals(){

3. return ();}

4. }

A、编译通过运行无异常 B、编译通过但运行时出错

C、行2出错,不能成功编译

A、private

D、不能成功编译,行3出错

D、public

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

B、protected C、private protected

9.Java的字符类型采用的是Unicode编码方案,每个Unicode码占用( B)个

比特位。

A、8 B、16 C、32 D、64

10.在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般

需要在程序的开头写上( D )语句。

A、import .* ; B、import .* ;

C、import .* ; D、import .* ;

11.以下关于构造函数的描述错误的是(A)。

A、构造函数的返回类型只能是void型。

B、构造函数是类的一种特殊函数,它的方法名必须与类名相同。

C、构造函数的主要作用是完成对类的对象的初始化工作。

D、一般在创建新对象时,系统会自动调用构造函数。

12.有程序如下,关于程序的描述哪个是正确的?(C )

public class Person{

static int arr[] = new int[10];

public static void main(String a[])

{ n(arr[1]); }

}

A、编译将产生错误 B、编译时正确,但运行时将产生错误

C、正确,输出0 D、正确,输出 null

13.有语句String s=”hello world”; ,以下操作哪个是不合法的?( B)

A、int i=();B、s>>>=3;C、String ts=(); D、String t=s+”!”;

14.给出如下代码:

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

15. Java application中的主类需包含main方法,main方法的返回类型是什

么?(D)

A、int B、float C、double D、void

16.有以下方法的定义,请选择该方法的返回类型(D)。

ReturnType method(byte x, double y)

{

return (short)x/y*2;

}

A、byte B、short C、int D、double

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

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

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

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

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

18.在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般

需要在程序的开头写上(D)语句。

A、import .* ; B、import .* ;

C、import .* ; D、import .* ;

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

A、BorderLayout B、FlowLayout C、GridLayout D、CardLayout

20.设有下面两个赋值语句:

a = nt(“123”);

b = f(“123”).intValue();

下述说法正确的是(D)

A、a是整数类型变量,b是整数类对象。B、a是整数类对象,b是整数类型变量。

C、a和b都是整数类对象并且值相等。D、a和b都是整数类型变量并且值相等。

21.编译并运行以下程序,以下描述哪个选项是正确的(C )。

1. class A{

2. protected String toString(){

3. return ng();}

4. }

A、编译通过运行无异常 B、编译通过但运行时出错

C、行2出错,不能成功编译 D、不能成功编译,行3出错

22.有以下程序片段,下列哪个选项不能插入到行1。(D )

1.

class Interesting{

3.//do sth

4. }

A、import .*; B、package mypackage;

C、class OtherClass{ } D、public class MyClass{ }

D、void

23.以下哪个不是Java的关键字?(A)

A、TRUE B、const C、super

24.关于以下application的说明,正确的是( C)。

1. class StaticStuff

2. {

3. static int x;

4. static { x+=5;}

5. public static void main(String args[ ])

6. {

7. n(“x=” + x);

8. }

9. static { x/=5;}

10.}

A、4行与9行不能通过编译,因为缺少方法名和返回类型

B、9行不能通过编译,因为只能有一个静态初始化器

C、编译通过,执行结果为:x=1

D、能通过编译,但程序运行结果不可预知,因为变量x没有初始化

25.FilterOutputStream是BufferedOutputStream、DataOutputStream及

PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数

类型?B

A、OutputStream B、File C、InputStreamD、BufferedOutputStream

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

A、private B、protected C、private protected D、public

27.有程序片段如下,以下哪个表示式的结果为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)

=========================================================

1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码

文件的扩展名为(B )。

A. java B. class

C. html D. exe

2、以下哪一个不是JAVA的标准数据流( D)。

A. 标准输出数据流 B. 标准输入数据流

C. 标准错误数据流 D. 标准运算数据流

3、. class 和.java 文件的含义分别是:(A)

A. Java 目标码文件和源文件; B. Java 可执行文件和目标码文件;

C. Java 源文件和目标码文件; D. Java 源文件和Java 平台配置文件;

4、 面板的边框有哪几种? (D)

A. 面板没有边框; B. 仅有单线边框;

C. 仅有黑色的边框; D. 面板缺省没有边框,但可以设置单线、斜坡、不光

滑等多种线形,可以设置边框的颜色、宽度等,还可以设置边框与内容之间的举

例等;

5、 以下几个命名方法,不符合Java 命名规范的是:(D)

A. 类的名称:MyClassName; B. 变量的名称:myArray;

C. 常量的名称:PI_VALUE; D. 成员函数的名称:GetName;

6、 在下面的代码中,break语句的作用是:(C)

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

if (aData[i] = = TargetData) {

FoundID = i;

break;

}

A. 退出if 程序块; B. 退出此次循环,直接进入下一次循环;

C. 退出整个循环; D. 退出整个函数;

7、 以下项中,不属于成员变量的定义部分的是:D

A. 访问级; B. 变量名称; C. 变量类型; D.变量的初始化方式;

8、以下关于异常捕获的原则中,错误的是(D )

A RuntimeException 可以不被捕获,Java会自动处理运行期异常。

B 先列出子类,后列出父类。

C 先列出具体的异常类,后列出通用的异常类。

D Exception类必须出现,而且必须作为catch块中第一个匹配的类。

9、 Java的一个重要特点是结构中立性,这种结构中立性表现在(C)

A 用Java编写的源程序无需编译,直接通过Java平台解释执行。

B Java源程序在不同的硬件和操作系统下,直接编译成该硬件和操作系统

能够运行的程序并运行。

C Java源程序编译成一种结构中立的目标文件格式,再有Java平台在不同

的硬件和操作系统下运行。

D Java源程序编译成一种通用的可执行程序,现在的硬件和操作系统都支

持这种通用的可执行程序。

10、在Swing中,一下列出的面板的作用中,错误的是(C).

A. 放置并排列组件B显示背景图案;C接收事件;D显示面板的边框;

11、.在Swing中,如何设置组件的边框?( C)

A通过根窗格的setBorder函数设置某各组件的边框;

B通过内容窗格的setBorder函数设置某各组件的边框;

C通过组件的setBorder函数设置;

D通过框架的setBorder函数设置某各组件的边框;

12、以下关于框架和其他窗口之间的关系中,错误的是(D)

A 对话框必须依附于某个框架

B 当框架最小化时,所有依附于它的窗口也会最小化

C 框架是一个程序的主窗口,每个具有图形界面的程序都至少要有一个框架

D 内部框架也是顶级容器组件

13、创建并显示框架的步骤中,错误的是(A)

A 将框架对象与入口类相连接

B 在框架中加如组件

C 创建一个框架对象

D 调用框架对象的setVisible函数显示框架

14、如何在框架中显示标题?(C )

A 调用根窗格的set Title 函数显示

B 调用内容窗格的setTitle函数显示

C 调用框架对象的setTitle函数显示

D 调用框架对象的Border对象的setTitle函数显示

15、下列关于Java语言的特点,描述错误的是(C)

A.Java是跨平台的编程语言 B.Java支持分布式计算

C.Java是面向过程的编程语言 D.Java支持多线程

16、下述概念中不属于面向对象方法的是D___。

A.对象、消息 B.继承、多态 C.类、封装 D.过程调用

17、结构化程序设计所规定的三种基本控制结构是 ( C )

A.输入、处理、输出 B.树形、网形、环形

C.顺序、选择、循环 D.主程序、子程序、函数

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

A.default String s; B.public final static native int w( )

C.abstract double d; D.Abstract final double hyperbolicCosine( )

19、Applet可以做下列哪些操作?C

A.读取客户端文件 B.在客户端主机上创建新文件

C.在客户端装载程序库 D.读取客户端部分系统变量

20、下列关于for循环和while循环的说法中哪个是正确的? c

A.while循环能实现的操作,for循环也都能实现

B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结

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

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

====================================================================

1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码

文件的扩展名为( B )。

A .java 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、在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的

( D )方法来完成一些画图操作。

A. start( ) B. stop( ) C. init( ) D. paint( )

4、不允许作为类及类成员的访问控制符的是( C )。

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

5、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类

名AB作为前缀就可以调用它,该方法头的形式为( A )。

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

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

*********************************************************************

1、Java中复合数据类型不包括(D)

A.类类型 B.数组 C.接口类型 D.指针

2、请从四个选项中选择答案,下列代码的执行结果是:(C)

Public class Test{

Public static void main(String args[]){

Float t=9.0f;

Int q=6;

n((t++)*(--q));

}

}

A.40 B.40.0 C.45.0 D.36.0

3、下列关于修饰符混用的说法,错误的是(D)

ct 不能与final 并列修饰同一个类

B.abstract类中可以有非abstract的方法

C.普通类(非abstract类)中不能有abstract方法

方法中能处理非static的属性

4、关于被保护访问控制符protected修饰的成员变量,以下说法正确的是(A)

A.可以被该类自身、与它在同一个包中的其它类、在其它包中的该类的子类所

访问

B.只能被该类本身和该类的所有的子类访问

C.只能被该类自身所访问

D.只能被同一个包中的类访问

5、x=2,y=3,z=4,则表达式z*=y++*--x的值是(A)

A.12 B.24 C.16 D.3

6、以下赋值语句正确的是(D)

c1=”a” f1=3.22 b1=266 L1=0xAC8L

7、Java不支持多重继承,但我们可以通过(B)实现

A.多态 B.接口 C.覆盖 D.抽象类

8.已知类person是类student的父类,以下数组定义和赋值哪些是正确的(A)

A. person p[]=new person[3]; p[1]=new student();

B .student s[]=new person[3]; s[1]=new person();

C .person p[]= new student[3];p[1]= new person();

D .student s[]=new student[3];s[1]=new person;

9 编译之后,得到了三个字节码文件: ,

MyClasslittle$.class MyClass$.这表明(C)

s类中的两个方法:little和1

B. 中有三个类:MyClass、little和1

C. MyClass类中有两个内部类:一个是命名的little,另一个是匿名的1

D. MyClass、little和1,这三者没什么关系

10、main 方法是java Application 程序执行的入口点,关于main方法的方法

头以下(B)是合法的。

static void main() static void main(String arg[])

static int main(String[] arg) D. void main(String

arg[])

11、当编译和运行下面的代码会出现什么情况?(A)

Import .*;

Class ExBase{

Abstract public void martley()

}

Public class MyEx extends ExBase{

Public static void main(String argv[]){

DataInputStream fi=new DataInputStream();

Try{

ar();

}

Catch(IOEception e){

(0);

}

Finally{n(“Doing finally”);}

}

}

A.编译错误 B.可以运行,没有打印出”Doing finally”

C.可以运行,在打印出”Doing finally”后退出 D.在运行之后立即退出

12、当编译和运行下面的代码会出现什么情况?(D)

Public class Sandys{

Private int court;

Public static void main(String argv[]){

Sandys s=new Sandys(99);

n();

}

Sandys(int balleount){

court=ballcount;

}

}

A编译错误,变量court被定义为private

B编译错误,调用的s没有被初始化

C可以编译和运行,没有输出结果

D可以编译和运行,输出结果为99

13、给出下面的代码:

Class Base{}

Class Agg extends Base{

Public String getFields(){

String name=”Agg”;

Return name;

}

}

Public class Avf{

Public static void main(String argv[]){

Base a=new Agg();

//Here

}

}

当把下面的代码添加到注释“/Here”后面,程序的输出结果是”Agg”(D)

n(lds()) B. n()

n((Base)lds())

n(((Agg)a).getFields())

14、当编译和运行下面的代码会出现什么情况?(A)

Abstract class Base{

Abstract public void myfunc();

Public void another(){

n(“Another method”);

}

}

Public class Abs extends Base{}

Public static void main(String argv[]){

Abs a=new Abs();

d();

}

Public void myfunc(){

n(“My Func”)

}

A可以编译和运行,输出的结果是”My func”

B出现编译错误:Base类中没有抽象方法

C可以编译,但运行是提示Base类中没有抽象方法

D出现编译错误,Base类中的方法myfunc没有方法体

15、编译和运行下面的代码会出现(D)

Import .*;

Class Base{

Public void amethod()throws FileNotFoundException{}

}

Public class ExcepDemo extends Base{

Public static void main(String argv[]){

New ExcepDemo();

}

Public void amethod(){}

Protected ExcepDemo(){

try{

BufferedReader inputStream=new BufferedReader(new InputStreamReader);

n(“Pausing”);

ne();

n(“Contimuing”);

d();

}catch(IOException ioe){}

}

A编译错误,因为构造方法被声明为protected

B编译错误,因为方法amethod没有抛出异常

C运行时错误,因为方法amthod没有抛出异常

D可以编译和运行,输出的结果是:Pausing…Continuing

其中…表示等待用户的键盘输入

17、以下程序的输出结果是(C)

class Aclass{

void go(){n(“Aclass”);}

}

public class Bclass extends Aclass{

Void go{

n(“Bclass”);

}

Public static void main(String args[]){

Aclass a= new Aclass();

Aclass al=new Bclass();

();

();

}

}

A、Aclass

Aclass

B、Bclass

Bclass

C、Aclass

Bclass

D、Bclass

Aclass

18、看以下程序

Boolean a=false;

Boolean b=true;

Boolean c=(a&&b)&&(!b);

Int result=c==false?1:2;

这段程序执行完后,c与result的值是:(A)

Ac=false;result=1; Bc=true;result=2;

Cc=true;result=1; Dc=false;result=2;

19、下面哪个单词是Java语言的关键字(B)

ed

20、switch语句(A)

A.都可以用if-else if结构实现

B.都不可以用if-else if结构实现

C.有的可以用if-else if结构实现

D.大部分不可以用if-else if结构实现

21、在异常处理中,如释放资源、关闭文件等善后操作由(C)来完成。

A. try子句 B. catch子句 C. finally子句 D. throw子句

22、下面哪个是Java语言中正确的标识符( C)

A. 3com B. import C. that D. this

23、下面哪个修饰符修饰的方法只能被本类中的其他方法使用(C)

A. protected B. static C. private D.

24、下面哪条语句定义了5个元素的数组(A)

A. int[]a={22,23,24,25,12};

B. int a []=new int(5);

C. int[5] array;

D. int[] arr;

25、下面哪项可以得到数组元素的个数,Java中定义数组名为abc。( B )

A. () B. C. len(abc) (abc)

26、下面哪个修饰符修饰的变量是所有同一个类生成的对象共享的(C)

A. public B. private

27、下面关于构造方法的说法不正确的是(B)

A、构造方法也属于类的方法,用于创建对象的时候给成员变量赋值。

B、构造方法不可以重载。

C、构造方法没有返回值

D、构造方法一定要和类名相同

28、监听事件和处理事件(A)

A、都由Listener完成 B、都由相应事件Listener处登记过的构件完成

C、由Listener和构件分别完成 D、由Listener和窗口分别完成

29、如果希望所有的控件在界面上均匀排列,应使用下列那种布局管理器?(B)

A. BoxLayout B. GridLayout Layout uLayout

30、给出如下代码:

Class Test{

Private int m;

Public static void fun() {

// some code…

}

}

如何使成员变量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

31、有个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为

前缀就……法头的形式为(A)

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

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

32、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码

文件的扩展名为(B)

C .html D .exe

33、如果只要让类中的成员变量可以被同一包访问,则使用如下哪个访问控制

符?(D)

Aprivate;BPublic;CProtected;D不使用访问控制符

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

A start();B init();C run();D main();

35、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机

制(B)A、 安全性 B、多线程 C、跨平台 D、可移植

36、为实现多线程之间的通信,需要使用下列哪种流才合适(D)

AFilter stream;BFile stream

CRandom access stream;DPipedInputStream和PipedOutputStream

37、函数重载是指(A)

A两个或两个以上的函数取相同的函数名,但形参的个数或类型不同

B两个以上的函数取相同的名字和具有相同的形参个数和类型

C两个以上的函数名字不同,但形参的个数或类型相同

D两个以上的函数取相同的函数名,并且函数的返回类型相同

38、构造方法何时被调用(B)

A、类定义时 B、创建对象时C、调用对象方法时 D、使用对象的变量时

39、Java中哪个类提供了随机访问文件的功能(A)

A.RandomAccessFile类 File类C.File类 File类

40、当方法遇到异常又不知如何处理时,应该怎么做(B)

A.捕获异常 B.抛出异常C.声明异常 D.嵌套异常

=====================================================================

=====================================================================

=====================================================================

二、填空题:(10小题,每题1分,共10分)

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

自节码 和解释运行字节。

2、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,

则类MyApplet必须是 Applet 类的子类并且存储该源程序文件的文件名为

3、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK

编译器 编译该源程序文件将产生 3 个文件名与类名相同

而扩展名为 .class 的字节码文件。

4、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode

码占 用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占用 2

字节内存空间。

5、使用数组时,下标表达式是整型表达式,下标的范围为 0 至数组长度减1

6、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 true 和 false 。

8、创建一个名为 MyPackage 的包的语句是 package MyPackage ; 该语

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

9、在Java程序中,通过类的定义只能实现 单 重继承,但通过接口的定义

可以实现 多重继承关系。

10、在文件操作中,public String getName()功能是 得到文件名。

public String getAbsolutePath()功能是 返回文件绝对路径。

==================================================================

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

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

2、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,

则类MyApplet必须是 Applet 类的子类并且存储该源程序文件

的文件名为 MyApplet 。

3、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK

编译器 编译该源程序文件将产生 3 个文件

名与类名相同而扩展名为 . class 的字节码文件。

4、在Java的基本数据类型中,char型采用Unicode编码方案,每个Unicode

码占用 2 字节内存空间,这样,无论是中文字符还是英文字符,都

是占用 2 字节内存空间。

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

6、若x = 5,y = 10,则x < y和x >= y的逻辑值分别为 true 和

false 。

7、 抽象(abstract)方法 方法是一种仅有方法头,没有具体方法体和操

作实现的方法,该方法必须在抽象类之中定义。 最终(final)方法 方法是不

能被当前类的子类重新定义的方法。

8、创建一个名为 MyPackage 的包的语句是 package

MyPackag ,

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

9、设有数组定义:int MyIntArray[ ] = { 10 , 20 , 30 , 40 , 50 , 60 ,

70}; 则执行以下几个语句后的输出结果是 120 。

int s = 0 ;

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

if ( i % 2 = = 1 ) s += MyIntArray[i] ;

n( s );

10、在Java程序中,通过类的定义只能实现 单 重继承,但通过接口的

定义可以实现 多 重继承关系。

====================================================

三、判断题。

1Java语言是平台无关的语言。T

2类的静态方法中可以访问该类的非静态数据成员.F

3Java中方法调用时参数传递都是按值传递的,因此从方法中退出时,参数的值

是不会变的。T

4覆盖方法所抛出的异常不能比原方法更多。T

5Final 方法不能被覆盖。T

6抽象类中一定包含抽象方法。F

7接口中的方法必须是抽象方法。T

8在方法定义中,所以可能发生的异常都必须用try{} catch(){}捕捉。F

9Java支持多重继承。F

10Final修饰的类不能派生子类。T

11覆盖的同名方法中,子类方法不能比父类方法的访问权限更严格。T

12不能在静态方法中使用this.T

13抽象类中不能创建对象。T

14一个类可以实现多接口。T

15接口中可以包含非静态成员。F

16不论是否捕捉到异常try{}catch(){} final{}语句中finally块中的代码总

要被执行。T

17一个类实现一个接口,则该类必须实现接口中的所有方法。F

18线程使用sleep方法去休眠后可以使用notify方法唤醒。F

19线程使用sleep方法休眠是会释放该线程同步锁定的对象。F

20Final类中的属性和方法都必须是final的。F

1、Java中的引用变量需要初始化,简单变量可以不进行初始化( x )

2、子类可以继承父类的除私有成员以外的其它所有成员。 ( v )

3、Java只支持单继承,也就是说子类只能有一个直接父类。(v )

4、框架是一个程序的主窗口,它是顶级容器。(v)

5、关闭框架时,缺省地也会关闭整个应用程序。(x)

6、Java可以设置程序的界面外观,即可以让程序在不同操作系统下按照系统特

有的外观风格显示,也可以将风格统一。( v)

7、中间容器,原子组件,菜单栏,工具栏等都直接放在顶级容器下( x)

8、++op运算符的作用是先将变量的值加1再返回变量的值(v)

9、为了不影响程序的正常运行,Javadoc命令全部嵌入在注释语句中,以“/**”

开头,以“*/”结尾。(v)

10、标签是最常用的组件,它的作用是在界面上显示一行文字,标签也可以显示

图片,或者即显示图片也显示文字。( v )

1即使一个类中未显式定义构造函数,也会有一个缺省的构造函数,缺省的构造

函数是无参函数,函数体为空。

( 对 )

2在Java的方法中定义一个常量要用const关键字。

( 错 )

3在异常处理中总是将可能产生异常的语句放在try块中,用catch子句去处理

异常,而且一个try块之后只能对应一个catch语句。

( 错)

4Applet是一种特殊的Panel,它是Java Applet程序的最外层容器。

( 对 )

5一个线程对象的具体操作是由run()方法的内容确定的,但是Thread类的run()

方法是空的,其中没有内容;所以用户程序要么派生一个Thread的子类并在子类

里重新定义run()方法,要么使一个类实现Runnable接口并书写其中run()方法

的方法体。 ( 对 )

6Java的字符类型采用的是Unicode编码,但所占字节由具体软硬件环境决定。

( 错 )

7所有的鼠标事件都由MouseListener监听接口的监听者来处理。

( 错 )

8Java语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。

( 对 )

9如果p是父类Parent的对象,而c是子类Child的对象,则语句p=c是正确

的。 ( 错 )

10Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字

free。 ( 错 )

11由继承性可知,程序中子类拥有的成员数目一定大于等于父类拥有的成员数

目。 (错 )

12静态初始化器是在其所属的类加载内存时由系统自动调用执行。

( 对 )

13 Applet是一种特殊的Panel,它是Java Applet程序的最外层容器。

( 对 )

14注释的作用是使程序在执行时在屏幕上显示//之后的内容。

( 错 )

15在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语

句,若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放

在前面。 ( 对 )

=====================================================================

=====================================================================

====================================================================

四、简答

1比较接口与抽象类的共同点和不同点.什么情况下应采用接口,什么情况下应

采用抽象类.

答:接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数

和返回值。接口方法不能包含任何实现,CLR允许接口可以包含事件、属性、索

引器、静态方法、静态字段、静态构造函数以及常数。 如果创建的功能将在大

范围的全异对象间使用,则使用接口。

抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可

以提供非抽象方法。抽象类不能实例化,必须通过继承由派生类实现其抽象方法。

相同点:都不能被直接实例化,都可以通过继承实现其抽象方法。 都是面向抽

象编程的技术基础,实现了诸多的设计模式。

不同点 :接口支持多继承;抽象类不能实现多继承。 接口只能定义抽象规

则;抽象类既可以定义规则,还可能提供已实现的成员。 接口是一组行为规范;

抽象类是一个不完全的类,着重族的概念。 接口可以用于支持回调;抽象类不能

实现回调,因为继承不支持。 接口只包含方法、属性、索引器、事件的签名,

但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的

方法。 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,

Struct就可以继承接口,而不能继承类。

2类的加载和构造方法的调用顺序

类的加载的顺序:先递归地加载父类的静态成员/代码块(object的最先);

再依次加载到本类的静态成员。

调用构造方法:先递归地调用父类的构造方法;默认调用父类空参的同,也

可在第一行写明调用用父类某个带参的。再依次到本类的构造方法;

先初始化父类的静态代码--->初始化子类的静态代码-->

==

==(创建实例时,如果不创建实例,则后面的不执行)初始化父类的非静态代码

---> ==

==初始化父类构造函数--->初始化子类非静态代码--->初始化子类构造函数

==

3什么是重载,什么是覆盖,有什么区别和共同点?

答:重载是指在同一个类中定义了多个名字相同而内容不同的成员方法;覆

盖则是指在子类中定义了与父类具有相同名字的成员方法。

重载与覆盖的区别在于:重载是存在于同一个类的不同方法之间的多态关

系,它们主要通过参数表中参数的个数、参数的数据类型和参数的顺序等方面的

不同来区分;面覆盖是存在于父类与子类之间的多态关系,它们在引用时通过指

出所属类的类名来区分。

=====================================================================

=====================================================================

====================================================================

五.程序阅读题

1.写出以下程序的运行结果。(54321)

public class TestArray

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

int i , j ;

int a[ ] = {1,3,2,5,4};

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

int k = i;

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

if ( a[j]>a[k] ) k = j;

int temp =a[i];

a[i] = a[k];

a[k] = temp; }

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

(a[i]+" ");

n( ); }

}

2.写出以下程序的功能。(在屏幕上输出文件的内容)

import .*;

class FileIODemo{

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

int b;

FileInputStream fileIn=new

FileInputStream(“”);

while((b=())!=-1){

((char)b); } }

}

3.写出以下程序的运行结果。Str0str1str2 str0str2

import .*;

public class Vec{

public static void main(String[] args) {

String[] s;

s=new String[2];

s[0]=new String("str1");

s[1]=new String("str2");

Vector v = new Vector();

for(int i = 0; i <2; i++) ment(s[i]);

ElementAt(new String("str0"),0);

Enumeration e = ts();

while(eElements())

(ement()+" ");

n();

Element("str1" );

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

(tAt(i) +" ");

n(); }

}

4.写出以下程序的运行结果。int

class OverloadDemo{

发布评论

评论列表 (0)

  1. 暂无评论