JAVA期末考试复习试题.docx

上传人:b****1 文档编号:2800227 上传时间:2023-05-04 格式:DOCX 页数:34 大小:33.19KB
下载 相关 举报
JAVA期末考试复习试题.docx_第1页
第1页 / 共34页
JAVA期末考试复习试题.docx_第2页
第2页 / 共34页
JAVA期末考试复习试题.docx_第3页
第3页 / 共34页
JAVA期末考试复习试题.docx_第4页
第4页 / 共34页
JAVA期末考试复习试题.docx_第5页
第5页 / 共34页
JAVA期末考试复习试题.docx_第6页
第6页 / 共34页
JAVA期末考试复习试题.docx_第7页
第7页 / 共34页
JAVA期末考试复习试题.docx_第8页
第8页 / 共34页
JAVA期末考试复习试题.docx_第9页
第9页 / 共34页
JAVA期末考试复习试题.docx_第10页
第10页 / 共34页
JAVA期末考试复习试题.docx_第11页
第11页 / 共34页
JAVA期末考试复习试题.docx_第12页
第12页 / 共34页
JAVA期末考试复习试题.docx_第13页
第13页 / 共34页
JAVA期末考试复习试题.docx_第14页
第14页 / 共34页
JAVA期末考试复习试题.docx_第15页
第15页 / 共34页
JAVA期末考试复习试题.docx_第16页
第16页 / 共34页
JAVA期末考试复习试题.docx_第17页
第17页 / 共34页
JAVA期末考试复习试题.docx_第18页
第18页 / 共34页
JAVA期末考试复习试题.docx_第19页
第19页 / 共34页
JAVA期末考试复习试题.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JAVA期末考试复习试题.docx

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

JAVA期末考试复习试题.docx

JAVA期末考试复习试题

JAVA期末考试复习试题

一.判断题

1.Java的源代码中定义几个类,编译结果就生成几个以.class为后缀的字节码文件。

(√)

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

(×)

分析:

java中没有回收(FREE)内存的功能,它会自动回收的,只要把对象close掉就等着回收就行了.

由于对象是使用new运算符动态分配的,java方法是自动为你的处理存储单元重新分配问题。

完成这项工作的技术被称为无用单元收集(garbagecollection)。

它的工作原理:

当不存在对一个对象的引用时,我们就假定不再需要那个对象了,那个对象所占有的存储单元可以被收回。

在java中并不像在C++中一样需要明确地销毁对象。

无用单元收集仅在偶尔执行程序时出现。

它不会出现,是因为存在一个或多个不再使用的对象。

还有,不同的Java运行时实现将会使用不同的无用单元收集方法,但是在大多数情况下,在编程时不必考虑它。

如果一个对象正在持有某些非Java资源,如文件处理或窗口字符字体,那么Java提供了一种称为结束(finalization)的机制。

3.Java有垃圾回收机制,内存回收程序可在指定的时间释放内存对象。

(×)

分析:

不对,JAVA虽然有垃圾回收机制,但是不能在指定的时间释放内存对象,只能在程序运行期间,当虚拟机空闲的时候回收。

4.构造函数用于创建类的实例对象,构造函数名应与类名相同,返回类型为void。

(×)

分析:

无返回类型

5.在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面。

(√)

分析:

个人觉得原因是子类更加具体一些,可以更好得描述这个异常,所以会把子类写在前面,如果把父类写在前面,那么这个父类就会接受很多的异常了,后面的子类就接收不到了

6.拥有abstract方法的类是抽象类,但抽象类中可以没有abstract方法。

(√)

7.Java的屏幕坐标是以像素为单位,容器的左下角被确定为坐标的起点。

(×)

分析:

左上角被确定为坐标的起点

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

(√)

9.在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。

(×)

分析:

并不是生成一个新对象,只是引用相同而已,真正的对象的空间是一样的.

二.单项选择题

1.Javaapplication中的主类需包含main方法,以下哪项是main方法的正确形参?

()

A、StringargsB、Stringar[]C、CharargD、StringBufferargs[]

分析:

比较常见的是String[]args,但是Stringargs[]也是可以的,ar和args并没有什么区别.

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

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

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

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

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

3.paint()方法使用哪种类型的参数?

()

A、GraphicsB、Graphics2DC、StringD、Color

分析:

这是GUI里面的,不考.

4.以下哪个不是Java的原始数据类型()

A、intB、BooleanC、floatD、char

分析:

java有八种基本数据类型,int4个字节short2个字节long8个字节byte2个字节float4个字节double8个字节字符类型布尔类型。

对应这八种基本数据类型有八个封装类,封装类是继承自Object的Java类。

而基本数据类型所描述的含义与C等相同。

5.以下哪项可能包含菜单条()。

A、PanelB、FrameC、AppletD、Dialog

分析:

这是GUI里面的,不考.

6.若需要定义一个类域或类方法,应使用哪种修饰符?

()

A、staticB、packageC、privateD、public

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

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

分析:

这是applet里面的,不考.

8.给出下面代码,关于该程序以下哪个说法是正确的?

()

publicclassPerson{

staticintarr[]=newint[5];

publicstaticvoidmain(Stringa[])

{

  System.out.println(arr[0]); }

}

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

C、输出零D、输出空

分析:

静态方法中调用静态变量是可以的,但是没有输入,所以会输出默认值0,

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

()

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

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

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

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

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

()

A、transientB、synchronizedC、serializeD、static

11.以下代码段执行后的输出结果为()

intx=-3;

inty=-10;

System.out.println(y%x);

A、-1B、2C、1D、3

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

()

1.

2.publicclassInteresting{

3.//dosth

4.}

A、importjava.awt.*;B、packagemypackage;

C、classOtherClass{}D、publicclassMyClass{}

分析:

报ThepublictypeMyClassmustbedefinedinitsownfile,MyClass要建在另一java文件中,一个java文件只允许有一个public(公有)的类,但如果把public去掉也是行的,一个java文件允许有多个空缺(友好)的类

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

a=Integer.parseInt(“12”);

b=Integer.valueOf(“12”).intValue();

下述说法正确的是()。

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

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

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

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

分析:

Integer.parseInt()是把一个字符串转换成int类型的变,这里就是把字符串类型的12装换成int类型的12;

staticvalueOf(inti)返回一个表示指定的int值的Integer实例。

先把int转换成Integer类型,再执行intValue();

intintValue()以int类型返回该Integer的值。

又装换成了一个int类型的12.

14.FilterOutputStream是BufferedOutputStream、DataOutputStream及PrintStream的父类,以下哪个类可能是FilterOutputStream构造函数的参数类型?

A、OutputStreamB、File

C、InputStreamD、BufferedOutputStream

分析:

理论上多层继承的类的构造方法一般选择最上层(最原始)的类.但是我查了API好像有点问题FilterOutputStream只有带File参数的构造方法.

15.在编写JavaApplet程序时,需在程序的开头写上()语句。

A、importjava.awt.*;B、importjava.applet.Applet;

C、importjava.io.*;D、importjava.awt.Graphics;

16.类Parent、Child定义如下:

1.publicclassParent

2.{publicfloataFun(floata,floatb)throws

3.IOException{}

4.}

5.publicclassChildextendsParent{

6.

7.}

将以下哪种方法插入行6是不合法的。

()

A、floataFun(floata,floatb){}

B、publicintaFun(inta,intb)throwsException{}

C、publicfloataFun(floatp,floatq){}

D、publicintaFun(inta,intb)throwsIOException{}

分析:

测试A:

报错:

Multiplemarkersatthisline

-Cannotreducethevisibilityoftheinheritedmethod

fromParent

意识就是不能减小继承后重写的方法的访问权限

修改办法就是在float前面加上public

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

A、privateB、protectedC、privateprotectedD、public

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

ReturnTypemethod(bytex,doubley)

{

return(short)x/y*2;

}

A、byteB、shortC、intD、double

分析:

注意,(short)x/y*2;这个short只是作用于x若要选B,修改办法是return(short)(x/y*2);

19、关于以下代码段的说法正确的是()

1.Strings="abcde";

2.StringBuffers1=newStringBuffer("abcde");

3.if(s.equals(s1))

4.s1=null;

5.if(s1.equals(s))

6.s=null;

A、第1行编译错误,String的构造器必须明确调用

B、第3行编译错误,因为s与s1有不同的类型

C、编译成功,但执行时在第5行有异常抛出

D、编译成功,过程中也没有异常抛出

分析:

s1.equals(s)只是比较两个对象中的字符是否相等,与对象类型无关

publicbooleanequals(ObjectanObject)

将此字符串与指定的对象比较。

当且仅当该参数不为null,并且是与此对象表示相同字符序列的String对象时,结果才为true。

20、编译并运行以下程序,以下描述哪个选项是正确的()

1.classX{

2.protectiedStringtoString()i{

3.returnsuper.toString();}

4.}

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

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

分析:

protectiedStringtoString()i{这里多了个i

三.程序阅读题

1.以下程序的输出结果为相等。

classStringTest1

{

publicstaticvoidmain(String[]args)

{

Strings1="hello";

Strings2=newString("hello");

if(s1.equals(s2)){

System.out.println("相等");

}else{

System.out.println("不相等");

}

}

}

分析:

s1.equals(s)只是比较两个对象中的字符是否相等,与对象类型无关

publicbooleanequals(ObjectanObject)

将此字符串与指定的对象比较。

当且仅当该参数不为null,并且是与此对象表示相同字符序列的String对象时,结果才为true。

Strings1="hello";

这个只是一个引用,内存中如果有“hello"的话,s1就指向它,如果没有才创建

如果你以后还用到"a"这个字符串的话并且是这样用:

Strings1="hello";

Strings3="hello";

Strings4="hello";

这3个变量都共享一个字符串"hello"

而Strings2=newString("hello");

是根据"hello"这个String对象再次构造一个String对象,将新构造出来的String对象的引用赋给s2

2.以下程序段的输出结果为56789。

publicclassTestArray

{

publicstaticvoidmain(Stringargs[]){

inti,j;

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

for(i=0;i

intk=i;

for(j=i;j

if(a[j]

inttemp=a[i];

a[i]=a[k];

a[k]=temp;

}

for(i=0;i

System.out.print(a[i]+"");

System.out.println();

}

}

分析:

就是一份冒泡排序

3.写出以下程序的功能。

importjava.io.*;

publicclassTestFile

{

publicstaticvoidmain(Stringargs[])throwsException

{

BufferedReaderbr=newBufferedReader(

newInputStreamReader(System.in));

BufferedWriterbw=newBufferedWriter(newFileWriter(“input.txt"));

Strings;

while(true)

{

System.out.print("请输入一个字符串:

");

System.out.flush();

s=br.readLine();

if(s.length()==0)break;

bw.write(s);

bw.newLine();

}

bw.close();

}

}

功能:

从键盘逐一输入字符串,逐一输出至input.txt文件中,直至输入空行。

分析:

和老师所说的功能比较接近,改改记记

4.阅读以下程序,写出输出结果。

classAnimal{

Animal(){

System.out.print("Animal");}

}

public

classDogextendsAnimal{

Dog(){

System.out.print("Dog");}

 

publicstaticvoidmain(String[]args){

Dogsnoppy=newDog();}

}

输出结果:

AnimalDog

分析:

在Java中,无论是explicit还是implicit方式,都要求在子类的构造方法中调用其父类的构造方法。

如果父类无构造方法(其实是一个默认无参的构造方法),那么子类的构造方法中会自动进行调用;如果父类有自己的构造方法(这时父类不会有默认无参的构造方法),那么在子类的构造方法中,必须要调用父类的某个构造方法,而且必须是在构造方法的第一个语句中进行调用。

究其原因,想必是Java语言设计者,要求子类有责任保证它所继承的父类尽快进入到一个稳定、完整的状态中。

试想,如果没有这个约束,那么子类的某个继承自父类的方法可能会使用到父类中的一些变量,而这些变量并没有进行初始化,从而产生一些难以预料的后果。

也因此,当一个类的构造方法是private时,它是不可被extends的,因为子类构造方法难以调用到这个父类的构造方法。

一、单选题

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

Strings=newString("abcdefg");

for(inti=0;i

System.out.print(s.charAt(i));

}

A)acegB)ACEGC)abcdefgD)abcd

2、有整型数组:

int[]x={12,35,8,7,2};,则调用方法Arrays.sort(x)后,数组x中的元素值依次是().

A)2781235B)1235872

C)3512872D)8712352

分析:

publicstaticvoidsort(int[]a)

对指定的int型数组按数字升序进行排序。

3、下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。

File构造函数中正确的路径和文件名的表示是()。

Filef=newFile(填代码处);

file=newFileReader(f);

in=newBufferedReader(file);

A)"./1.txt"B)"../my/1.txt"C)"c:

\\my\\1.txt"D)"c:

\my\1.txt"

分析:

也可以是c:

/my/1.txt;

c:

\\my\\1.txt其中第一个\为转移字符

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

Strings1=newString("abc");

Strings2=newString("abc");

booleanb1=s1.equals(s2);

booleanb2=(s1==s2);

System.out.print(b1+""+b2);

A)truefalseB)falsetrueC)truetrueD)falsefalse

分析:

equal比较的是两个对象所表示的字符是否相等,而==比较的是两个对象是否相等.

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

Hashtablehashtable=newHashtable();

hashtable.put("x","12345");

hashtable.put("y","67890");

hashtable.put("a","abcde");

System.out.println(hashtable.get("a"));

A)aB)abcdeC)12345D)67890

分析:

存入名值对(put),再按照名字取出其中的值(get)

下面说一下HashMap和Hashtable的区别:

Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Mapinterface的一个实现

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许

还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。

因为contains方法容易让人引起误解。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在

多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap

就必须为之提供外同步。

Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异

6、下面语句的功能是()。

RandomAccessFileraf2=newRandomAccessFile("1.txt","rw");

A)打开当前目录下的文件1.txt,既可以向文件写数据,也可以从文件读数据。

B)打开当前目录下的文件1.txt,但只能向文件写入数据,不能从文件读取数据。

C)打开当前目录下的文件1.txt,但不能向文件写入数据,只能从文件读取数据。

D)以上说法都不对。

分析:

没用过额…下面有个例子,自己看看它的用法吧

importjava.io.IOException;

importjava.io.File;

importjava.io.RandomAccessFile;

classRandomFileTest

{

publicstaticvoidmain(String[]args)throwsException

{

Students1=newStudent(1,"zhangsan",90.5);

Students2=newStudent(2,"lisi",98.5);

Students3=newStudent(3,"wangwu",96.5);

FileuserDir=newFile(System.getProperties().getProperty("user.dir"));

FiletempFile=File.createTempFile("~student",".tmp",userDir);

tempFile.deleteOnExit();

RandomAccessFileraf=newRandomAccessFile(tempFile,"rw");

s1.write(raf);

s2.write(raf);

s3.write(raf);

raf.seek(0);

Students=newStudent();

for(longi=0;i

{

s.read(raf);

System.out.println("[lenth:

"+raf.length()+",i="+i+"]"+s);

}

raf.close();

T

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

当前位置:首页 > PPT模板 > 商务科技

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

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