Java期末考试题.docx

上传人:b****4 文档编号:3784180 上传时间:2023-05-06 格式:DOCX 页数:18 大小:21.98KB
下载 相关 举报
Java期末考试题.docx_第1页
第1页 / 共18页
Java期末考试题.docx_第2页
第2页 / 共18页
Java期末考试题.docx_第3页
第3页 / 共18页
Java期末考试题.docx_第4页
第4页 / 共18页
Java期末考试题.docx_第5页
第5页 / 共18页
Java期末考试题.docx_第6页
第6页 / 共18页
Java期末考试题.docx_第7页
第7页 / 共18页
Java期末考试题.docx_第8页
第8页 / 共18页
Java期末考试题.docx_第9页
第9页 / 共18页
Java期末考试题.docx_第10页
第10页 / 共18页
Java期末考试题.docx_第11页
第11页 / 共18页
Java期末考试题.docx_第12页
第12页 / 共18页
Java期末考试题.docx_第13页
第13页 / 共18页
Java期末考试题.docx_第14页
第14页 / 共18页
Java期末考试题.docx_第15页
第15页 / 共18页
Java期末考试题.docx_第16页
第16页 / 共18页
Java期末考试题.docx_第17页
第17页 / 共18页
Java期末考试题.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Java期末考试题.docx

《Java期末考试题.docx》由会员分享,可在线阅读,更多相关《Java期末考试题.docx(18页珍藏版)》请在冰点文库上搜索。

Java期末考试题.docx

Java期末考试题

2010年——2011年Java期末考试题

一、判断题。

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

T

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

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

T

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

T

5.Final方法不能被覆盖。

T

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

F

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

T

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

F

9.Java支持多重继承。

F

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

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

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

F

二、选择题

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

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

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

(C)

PublicclassTest{

Publicstaticvoidmain(Stringargs[]){

Floatt=9.0f;

Intq=6;

System.out.println((t++)*(--q));

}

}

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

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

A.abstract不能与final并列修饰同一个类

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

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

D.static方法中能处理非static的属性

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

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

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

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

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

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

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

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

A.charc1=”a”B.floatf1=3.22C.byteb1=266D.longL1=0xAC8L

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

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

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

A.personp[]=newperson[3];p[1]=newstudent();

B.students[]=newperson[3];s[1]=newperson();

C.personp[]=newstudent[3];p[1]=newperson();

D.students[]=newstudent[3];s[1]=newperson;

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

MyClass.class,MyClasslittle$.classMyClass$1.class.这表明(C)

A.MyClass类中的两个方法:

little和1

B.MyClass.Java中有三个类:

MyClass、little和1

C.MyClass类中有两个内部类:

一个是命名的little,另一个是匿名的1

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

10、main方法是javaApplication程序执行的入口点,关于main方法的方法头以下(B)是合法的。

A.publicstaticvoidmain()B.publicstaticvoidmain(Stringarg[])

C.publicstaticintmain(String[]arg)D.B.publicvoidmain(Stringarg[])

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

(A)

Importjava.io.*;

ClassExBase{

Abstractpublicvoidmartley()

}

PublicclassMyExextendsExBase{

Publicstaticvoidmain(Stringargv[]){

DataInputStreamfi=newDataInputStream(System.in);

Try{

Fi.readChar();

}

Catch(IOEceptione){

System.exit(0);

}

Finally{System.out.println(“Doingfinally”);}

}

}

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

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

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

(D)

PublicclassSandys{

Privateintcourt;

Publicstaticvoidmain(Stringargv[]){

Sandyss=newSandys(99);

System.out.println(s.court);

}

Sandys(intballeount){

court=ballcount;

}

}

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

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

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

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

13、给出下面的代码:

ClassBase{}

ClassAggextendsBase{

PublicStringgetFields(){

Stringname=”Agg”;

Returnname;

}

}

PublicclassAvf{

Publicstaticvoidmain(Stringargv[]){

Basea=newAgg();

//Here

}

}

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

A.System.out.println(a.getFields())B.System.out.println(a.name)

C.System.out.println((Base)a.getFields())D.System.out.println(((Agg)a).getFields())

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

(A)

AbstractclassBase{

Abstractpublicvoidmyfunc();

Publicvoidanother(){

Systern.out.println(“Anothermethod”);

}

}

PublicclassAbsextendsBase{}

Publicstaticvoidmain(Stringargv[]){

Absa=newAbs();

a.amethod();

}

Publicvoidmyfunc(){

System.out.println(“MyFunc”)

}

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

B.出现编译错误:

Base类中没有抽象方法

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

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

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

Importjava.io.*;

ClassBase{

Publicvoidamethod()throwsFileNotFoundException{}

}

PublicclassExcepDemoextendsBase{

Publicstaticvoidmain(Stringargv[]){

NewExcepDemo();

}

Publicvoidamethod(){}

ProtectedExcepDemo(){

try{

BufferedReaderinputStream=newBufferedReader(newInputStreamReader);

System.out.println(“Pausing”);

inputStream.readLine();

System.out.println(“Contimuing”);

This.amethod();

}catch(IOExceptionioe){}

}

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

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

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

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

Pausing

Continuing

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

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

classAclass{

voidgo(){System.out.println(“Aclass”);}

}

publicclassBclassextendsAclass{

Voidgo{

System.out.println(“Bclass”);

}

Publicstaticvoidmain(Stringargs[]){

Aclassa=newAclass();

Aclassal=newBclass();

a.go();

al.go();

}

}

A、Aclass

Aclass

B、Bclass

Bclass

C、Aclass

Bclass

D、Bclass

Aclass

18、看以下程序

Booleana=false;

Booleanb=true;

Booleanc=(a&&b)&&(!

b);

Intresult=c==false?

1:

2;

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

(A)

A.c=false;result=1;

B.c=true;result=2;

C.c=true;result=1;

D.c=false;result=2;

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

A.FloatB.thisC.stringD.unsigned

20、switch语句(A)

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

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

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

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

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

A.try子句B.catch子句

C.finally子句D.throw子句

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

A.3comB.importC.thatD.this

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

A.protectedB.staticC.privateD.

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

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

B.inta[]=newint(5);

C.int[5]array;

D.int[]arr;

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

(B)

A.abc.length()B.abc.lengthC.len(abc)D.ubound(abc)

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

A.publicB.privateC.staticD.final

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

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

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

C、构造方法没有返回值

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

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

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

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

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

(B)

A.BoxLayoutB.GridLayoutC.BorderLayoutD.FlowLouLayout

30、给出如下代码:

ClassTest{

Privateintm;

Publicstaticvoidfun(){

//somecode…

}

}

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

(C)

A、将privateintm改为protectedintm

B、将privateintm改为publicintm

C、将privateintm改为staticintm

D、将privateintm改为intm

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

A.staticvoidmethod()B.publicvoidmethod()

C.finalvoidmethod()D.abstractvoidmethod()

32、编译JavaApplication源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)

A..javaB..class

C..htmlD..exe

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

(D)

A、private

B、Public

C、Protected

D、不使用访问控制符

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

(C)

A、start()

B、init()

C、run()

D、main()

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

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

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

A、Filterstream

B、Filestream

C、Randomaccessstream

D、PipedInputStream和PipedOutputStream

37、函数重载是指(A)

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

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

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

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

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

A、类定义时B、创建对象时

C、调用对象方法时D、使用对象的变量时

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

A.RandomAccessFile类B.RandomFile类

C.File类D.AccessFile类

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

A.捕获异常B.抛出异常

C.声明异常D.嵌套异常

三、简答

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

答:

接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。

接口方法不能包含任何实现,CLR允许接口可以包含事件、属性、索引器、静态方法、静态字段、静态构造函数以及常数。

如果创建的功能将在大范围的全异对象间使用,则使用接口。

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

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

相同点:

都不能被直接实例化,都可以通过继承实现其抽象方法。

都是面向抽象编程的技术基础,实现了诸多的设计模式。

不同点:

接口支持多继承;抽象类不能实现多继承。

接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。

接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。

接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。

接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。

接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。

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

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

类的加载的顺序:

先递归地加载父类的静态成员/代码块(object的最先);再依次加载到本类的静态成员。

调用构造方法:

先递归地调用父类的构造方法;默认调用父类空参的同,也可在第一行写明调用用父类某个带参的。

再依次到本类的构造方法;

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

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

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

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

答:

重载是指在同一个类中定义了多个名字相同而内容不同的成员方法;覆盖则是指在子类中定义了与父类具有相同名字的成员方法。

重载与覆盖的区别在于:

重载是存在于同一个类的不同方法之间的多态关系,它们主要通过参数表中参数的个数、参数的数据类型和参数的顺序等方面的不同来区分;面覆盖是存在于父类与子类之间的多态关系,它们在引用时通过指出所属类的类名来区分。

四、程序编程题

1、图形界面有一个标签、一个文本框和一个按钮,编写程序实现点击按钮后,将文本框的内容取出,作为标签文本复制给标签。

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassc10_15extendsJAppletimplementsActionListener

{

Containerctp=getContentPane();

ImageIconicon1=newImageIcon("g1.gif"),

icon2=newImageIcon("g2.gif");

JLabellb1=newJLabel(),

lb2=newJLabel("标签文本",icon2,JLabel.CENTER);

JTextFieldtf1=newJTextField(10);//创建文本框对象

JButtonbt=newJButton("复制到标签");//创建按钮对象

publicvoidinit()

{

ctp.setLayout(newFlowLayout());

ctp.add(tf1);

ctp.add(bt);

ctp.add(lb2);

bt.addActionListener(this);

}

publicvoidactionPerformed(ActionEvente)

{

Stringstr;

if(e.getSource()==bt)

{

str=tf1.getText();

lb2.setText(str);

}

}

}

 

2、如图所示,标签1的字号比文本框的字号大。

当单击按钮时,若输入文本框中的数正确,则标签2文本显示正确,否则显示不正确。

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassc10_16extendsJAppletimplementsActionListener

{

Containerctp=getContentPane();

ImageIconicon1=newImageIcon("g1.gif"),

icon2=newImageIcon("g2.gif");

JLabellb1=newJLabel(),

lb2=newJLabel("6+9=");//创建标签

JTextFieldtf1=newJTextField(3);//创建文本框对象

JButtonbt=newJButton("验证");//创建按钮对象

Fontf=newFont("Arial",Font.PLAIN,24);//设置字体和大小

publicvoidinit()

{

lb2.setFont(f);//设置标签字体变大

ctp.setLayout(newFlowLayout());//设置排列方式

ctp.add(lb2);//加入组件

ctp.add(tf1);

ctp.add(lb1);

ctp.add(bt);

bt.addActionListener(this);//假如按钮的监听

}

publicvoidactionPerformed(ActionEvente)

{

Stringstr1="正确";

Stringstr2="不正确";

Stringstr3="";

if(e.getSource()==bt)

{

str3=tf1.getText();

if(str3.equals("15")){

lb1.setText(str1);

}

else

lb1.setText(str2);

}

}

}

3、编写一个JApplet程序,用GridLayout的布局方式设计一个界面,共八个按钮当点击含有加号的按钮时,则第一排第二个按钮文本变为加号,当点击OK时,将算出的1+4的结果添加到第一排的最后一个按钮文本中。

当点击含有*号的按钮时,则第一排第二个按钮文本变为*号,当点击OK时,将算出的1*4的结果添加到第一排的最后一个按钮文本中。

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.event.*;

publicclassc10_16extendsJAppletimplementsActionListener

{

JPanelp1=newJPanel(),p2=newJ

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2