JAVA认证历年真题SCJP考试真题和解析_第1页
JAVA认证历年真题SCJP考试真题和解析_第2页
JAVA认证历年真题SCJP考试真题和解析_第3页
JAVA认证历年真题SCJP考试真题和解析_第4页
JAVA认证历年真题SCJP考试真题和解析_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA认证历年真题SCJP考试真题和解析

1.Whichofthefollowingrangeofshortiscorrect?

A.-27-27-1

B.0—216-1

C.?215—215-1

D.?231—231-1

翻译下面哪些是short型的取值范围。

答案C

解析短整型的数据类型的长度是16bits,有符号。另外需要

说明的是java中所有的整(Integral)数(包括byte,short,int,lo

ng)全是有符号的。

2.Whichdeclarationsofidentifiersarelegal?

A.$persons

B.TwoUsers

C.*point

D.this

E._endline

翻译下面哪些是合法的标识符。

答案A,B,E

解析Java的标识符可以以一个Unicode字符,下滑线(_),

美元符($)开始,后续字符可以是前面的符号和数字,没有长度限

制,大小写敏感,不能是保留字。

3.Whichstatementofassigningalongtypevariableto

ahexadecimalvalueiscorrect?

A.longnumber345L;

B.longnumber0345;

C.longnumber0345L;

D.longnumber0x345L

翻译哪些是将一个十六进制值赋值给一个long型变量。

答案D

解析十六进制数以Ox开头,long型数以L(大小写均可,

般使用大写,因为小写的1和数字1不易区分)。

4.Whichofthefollowingfragmentsmightcauseerrors?

A.Strings="Gonewiththewind”;

Stringt="good

Stringk=s+t;

B.Strings="Gonewiththewind”;

Stringt;

t=s[3]+“one";

C.Strings="Gonewiththewind”;

Stringstandard=s.toUpperCase();

D.Strings="homedirectory”;

Stringt=s-"directory”;

翻译下面的哪些程序片断可能导致错误。

答案B.D

解析

A:String类型可以直接使用+进行连接运算。

B:String是一种Object,而不是简单的字符数组,不能使用下

标运算符取其值的某个元素,错误。

C:toUpperCaseO方法是String对象的一个方法,作用是将字

符串的内容全部转换为大写并返回转换后的结果(String类型)。

D:String类型不能进行减(-)运算,错误。

5.Whicharesyntacticallyvalidstatementat//pointx?

classPerson{

privateinta;

publicintchange(intm){returnm;}

}

publicclassTeacherextendsPerson{

publicintb;

publicstaticvoidmain(Stringarg[]){

Personp=newPerson();

Teachert=newTeacher();

inti;

//pointx

)

}

A.i=m;

B.i=b;

C.i=p.a;

D.i=p.change(30);

E.i=t.b.

翻译在〃pointx处的哪些申明是句法上合法的。

答案D,E

解析

A:m没有被申明过,不能使用。

B:虽然b是类Teacher的public成员变量,但是在静态方法中

不能使用类中的非静态成员。

C:a是类Person的private成员,在类外不能直接引用。

D:change(intm)方法是public方法,并且返回一个int型值,

可以通过类的实例变量P引用并赋值给一个int型变量。

E:b是类Teacher的public成员变量,且是int型,可以通过

类的实例变量t引用并赋值给一个int型变量。

6.Whichlayoutmanagerisusedwhentheframeisresizedthe

buttons,spositionintheFramemightbechanged?

A.BorderLayout

B.FlowLayout

C.CardLayout

D.GridLayout

翻译当Frame的大小被改变时Frame中的按钮的位置可能被改变

时使用的哪一个布局管理器。

答案B

解析

A:该布局管理器将容器划分为五个部分,容器大小的改变不会

影响其中的组件的位置而是影响他们的大小。

B:该布局管理器根据放入其中的组件的最合适大小调整组件的

位置,根据组件放入的顺序安排,一行不能容纳时放入下一行,因此

容器的大小改变可能改变组件的位置。

C:该布局管理器显示放入该容器的当前页中的组件,一次显示

一个,容器大小的改变不能影响其中组件的位置。

D:该布局管理器将容器划分为固定的网格,组件加入后占据一

个单元,各组件的相对位置不会因为容器的大小变化而变化,改变的

只是组件的大小。

7.Giventhefollowingcodefragment:

1)publicvoidcreate(){

2)VectormyVect;

3)myVect=newVector();

4)}

Whichofthefollowingstatementsaretrue?

A.Thedeclarationonline2doesnotallocatememorys

paceforthevariablemyVect.

B.Thedeclarationonline2allocatesmemoryspacefor

areferencetoaVectorobject.

C.Thestatementon1ine2createsanobjectofclassV

ector.

D.Thestatementonline3createsanobjectofclassV

ector.

E.Thestatementonline3allocatesmemoryspacefora

nobjectofclassVector

翻译

给出下面的代码片断。。。下面的哪些陈述为true(真)?

A.第二行的声明不会为变量myVect分配内存空间。

B.第二行的声明分配一个到Vector对象的引用的内存空间。

C.第二行语句创建一个Vector类对象。

D.第三行语句创建一个Vector类对象。

E.第三行语句为一个Vector类对象分配内存空间。

答案A,D.E

解析

SL-275中指出:要为一个新对象分配空间必须执行newXxx()

调用,new调用执行以下的操作:

1.为新对象分配空间并将其成员初始化为0或者nullo

2.执行类体中的初始化。(例如在类中有一个成员声明inta=

10;在第一步后a=0,执行到第二步后a=10)

3.执行构造函数。

4.变量被分配为一个到内存堆中的新对象的引用。

8.Whichofthefollowingansweriscorrecttoexpress

thevalue8inoctalnumber?

A.010

B.0x10

C.08

D.0x8

翻译

下面的哪些答案可以用以表示八进制值8。

答案A

解析八进制值以0开头,以Ox开头的为十六进制值,八进

制中不能出现数字8,最大只有7。

9.WhicharenotJavakeywords?

A.TRUE

B.sizeof

C.const

D.super

E.void

翻译

哪些不是Java关键字。

答案A.B

解析

A:不是,Java中有true,但是这也不是关键字而是字面量(li

teral)。

B:不是,Java中不需要这个操作符,所有的类型(原始类型)

的大小都是固定的。

C、D、E都是,需要说明的是const是java中未被使用的关键

字。

10.Whichofthefollowingstatementsaretrue?

A.Theequals()methoddeterminesifreferencevaluesr

efertothesameobject.

B.The==operatordeterminesifthecontentsandtype

oftwoseparateobjectsmatch.

C.Theequals()methodreturnstrueonlywhentheconte

ntsoftwoobjectsmatch.

D.TheclassFileoverridesequals()toreturntrueif

thecontentsandtypeoftwoseparateobjectsmatch.

翻译

下面的哪些叙述为真。

A.equals。方法判定引用值是否指向同一对象。

B.==操作符判定两个分立的对象的内容和类型是否一致。

C.equals。方法只有在两个对象的内容一致时返回true。

D.类File重写方法equals。在两个分立的对象的内容和类型

一致时返回true。

答案A,D

解析严格来说这个问题的答案是不确定的,因为equals。方

法是可以被重载的,但是按照java语言的本意来说:如果没有重写

(override)新类的equals(),则该方法和==操作符一样在两个

变量指向同一对象时返回真,但是java推荐的是使用equals。方法

来判断两个对象的内容是否一样,就像String类的equals。方法所

做的那样:判定两个String对象的内容是否相同,而==操作符返回

true的唯一条件是两个变量指向同一对象。从这个意义上来说选择

给定的答案。从更严格的意义来说正确答案应该只有d

11.Whichstatementsaboutinheritancearetrue?

A.InJavaprogramminglanguageonlyallowssingleinhe

ritance.

B.InJavaprogramminglanguageallowsaclasstoimple

mentonlyone

interface.

C.InJavaprogramminglanguageaclasscannotextenda

classandimplement

ainterfacetogether.

D.InJavaprogramminglanguagesingleinheritancemake

scodemore

reliable.

翻译

下面关于继承的哪些叙述是正确的。

A.在java中只允许单一继承。

B.在java中一个类只能实现一个接口。

C.在java中一个类不能同时继承一个类和实现一个接口。

D.java的单一继承使代码更可靠。

答案A,D

解析在java中一个类只能有一个直接父类,但是可以实现多

个接口,在继承的同时可以实现接口,之所以取消多继承的原因是多

继承使得代码产生很多问题,而使用单一继承则可以使代码更可靠。

12.

1)classPerson{

2)publicvoidprintValue(inti,intj){/*♦••*/}

3)publicvoidprintValue(inti){/*...*/}

4)}

5)publicclassTeacherextendsPerson{

6)publicvoidprintValue(){/*..*/}

7)publicvoidprintValue(inti){/".*/}

8)publicstaticvoidmain(Stringargs[]){

9)Persont=newTeacher();

10)t.printValue(10);

H)}

⑵}

Whichmethodwillthestatementonline10call?

A.online2

B.online3

C.online6

D.online7

翻译

第十行的声明将调用哪些方法。

答案D

解析变量t是一个Person对象,但是它是用Teacher实例化

的,这个问题涉及到java的编译时多态和运行时多态的问题,就编

译时多态来说,t实际上是一个Person类,这涉及到类型的自动转

换(将一个子类的实例赋值给一个父类的变量是不用进行强制类型转

换,反之则需要

进行强制类型转换,而且被赋值的变量实际上应该是一个子类的对

象),如果对t调用了子类中新增的方法则造成编译时错误编译将不

能通过,而在运行时,运行时系统将根据t实际指向的类型调用对应

的方法,对于本例来说,t.print(10)将调用t实际指向的Teacher

类的对应方法。在java中,可以用一个子类的实例实例化父类的一

个变量,而变量在编译时是一个父类实例,在运行时可能是一个子类

实例。

13.WhicharenotJavaprimitivetypes?

A.short

B.Boolean

C.unit

D.float

翻译

下面哪些不是java的原始数据类型。

答案B,C

解析Java的原始数据类型一共就八个,分别是:byte,short,

int,long,boolean,char,float,double0注意这些是大小写敏感的,

而Boolean是booelan的封装类(wrapperclass)。

14.Usetheoperatorswhichstatementsare

true?

A.00000100000000000000000000000000«5gives

10000000000000000000000000000000

B.00000100000000000000000000000000«5gives

11111100000000000000000000000000

C.11000000000000000000000000000000»5gives

1111111000000000oooooooooooooooo

D.1100OOOOOOOOOOOOOOOOOOOOOOOO0000»5gives

OOOO0110oooooooooooooooooooooooo

翻译

使用和〃>>〃操作符的哪些陈述是对的。

答案A,c

解析Java的移位操作符一共有三种,分别是“>>",">>>","

<<",执行的操作分别是有符号右移,无符号右移,左移,有符号右

移的意思是说移入的最高位和原最高符号位相同,无符号右移是移入

位始终补零,左移时最低位始终补零,最高位被舍弃。移位操作符另

一个非常值得注意的特点是其右操作数是取模运算的,意思是说对于

一个int型数据而言,对它移位32位的结果是保持不变而非变成零,

即:a>>32的结果是a而不是0,同理,对long型数是对右操作数取

64的模,a»64==a;还有一点需要注意的是移位操作符">>>"只对

int型和long型有效,对byte或者short的操作将导致自动类型转

换,而且是带符号的。

15.Whichofthefollowingrangeofintiscorrect?

A.-27-27-1

B.0—232-1

C.?215—215-1

D.?231—231-1

翻译

int的取值范围是哪个。

答案D

解析int型是32位的。参看第一题的论述。

16.Whichkeywordshouldbeusedtoenableinteractionwith

thelockofan

object?Theflagallowsexclusiveaccesstothatobject.

A.transient

B.synchronized

C.serialize

D.static

翻译

下面的哪些关键字通常用来对对象的加锁,该标记使得对对象的

访问是排他的

答案B

解析由于java是多线程的语言,多个线程可以“同时•”访问

同一数据区,而在处理某些数据时不希望其它的线程修改那些数据的

值或者某些操作是不可打断的,要做到这个,可以使用synchronize

d关键字声明这一点。

17.Whichisthereturntypeofthemethodmain()?

A.int

B.void

C.boolean

D.static

翻译

main。方法的返回类型是什么?

答案B

解析在java中,程序运行的入口就是main。方法,它必须

是这样的形式:publicstaticvoidmain(Stringargs[])。但是严

格来讲这个题目的答案还可以加上a和c,因为并没有限定是程序入

口的main。方法,而main()方法是可以重载的。一般意义上的main

0当然就是指我们刚开始所说的main()方法了。

18.Giventhefollowingcode:

if(x>0){System,out.printin(/,first,/);}

elseif(x>-3){System.out.printin(,,second,/);}

else{System.out.printin("third");}

Whichrangeofxvaluewouldprintthestring"second”?

A.x>0

B.x>-3

C.x<=-3

D.x<=0&x>-3

翻译

给出下面的代码:

x的取值在什么范围内时将打印字符串〃second”。

答案D

解析x>0时打印"first”,x>-3&&x〈=0时打印"second",x<=-

3时打印"third”。这个题目没有什么难的,只要理解if语句的语法

就可以了。

19.GiventhefollowingexpressionaboutTextFieldwhic

huseaproportional

pitchfont.

TextFieldt=newTextField("theyaregood”,40);

Whichstatementistrue?

A.Thedisplayedstringcanusemultiplefonts.

B.Themaximumnumberofcharactersinalinewillbe4

0.

C.Thedisplayedwidthisexactly40characters.

D.Theusercaneditthecharacters.

翻译

给出以下关于一个使用适当的字符间距的字体的TextField的

表达式。

哪些叙述是对的?

A.被显示的字符串可以使用多种字体。

B.一行中最大的字符数是40

C.显示的宽度正好是40个字符宽。

D.用户可以编辑字符。

答案D

解析对于TextField的该种形式的构造函数来说,前一个参数

是文本域中初始的字符串的显示值,而后一个是推荐的显示宽度,以

列数表示,在构造文本域的时候会将这个大小设置为最佳大小,如果

容器的限制使得文本域不能显示这么多也没有办法,一般来说是比这

个大小大的,而且即使宽度很小,你也可以在文本域的一行中输入很

长的字符串,只有你不使用回车,在超过显示宽度后文本域会自动出

现水平滚动条(没有被设置为关闭,缺省是不关闭的),而文本域的

缺省编辑方式是可编辑的,一个文本域只能使用一种字体,这个字体

可以在运行的过程中动态的改变,但是文本域中的所有字符串都将使

用这个字体显示。

20.Whichstatementsaboutthegarbagecollectionaretrue?

A.Theprogramdevelopermustcreateathreadtoberes

ponsibleforfree

thememory.

B.Thegarbagecollectionwillcheckforandfreememor

ynolongerneeded.

C.Thegarbagecollectionallowtheprogramdevelopert

oexplicityand

immediatelyfreethememory.

D.Thegarbagecollectioncanfreethememoryusedjava

objectatexpect

time.

翻译

关于垃圾收集的哪些叙述是对的。

A.程序开发者必须自己创建一个线程进行内存释放的工作。

B.垃圾收集将检查并释放不再使用的内存。

C.垃圾收集允许程序开发者明确指定并立即释放该内存。

D.垃圾收集能够在期望的时间释放被java对象使用的内存。

答案B

解析Java语言将内存分配和释放的工组交给了自己,程序员

不必做这些工作,它提供一个系统级的线程跟踪每个内存的分配,在

JVM的空闲处理中,垃圾收集线程将检查和释放不再使用的内存(即

可以被释放的内存)。垃圾收集的过程在java程序的生存期中是自

动的,不需要分配和释放内存,也避免了内存泄漏。可以调用Syste

m.gc()方法建议(suggest)JVM执行垃圾收集以使得可被释放的内

存能立即被使用,当此方法返回的时候,JVM已经做了最大的努力从

被丢弃的对象上回收内存空间。程序员不能指定收集哪些内存,一般

而言也不用关心这个问题,除非是程序的内存消耗很大,特别是有很

多临时对象时可以“建议”进行垃圾收集以提高可用内存。需要指出

的是调用System,gc()方法不能保证JVM立即进行垃圾收集,而只能

是建议,因为垃圾收集线程的优先级很低(通常是最低的)。

21、Whichofthefollowingassignmentisnotcorrect?

A.floatf=11.1;

B.doubled=5.3E12;

C.doubled=3.14159;

D.doubled=3.14D.

(a)

题目:下面的哪些赋值语句是对的。

浮点数的赋值是带有小数点的数字缺省是double型的,如果在

浮点数后面加f或者F则是float,后面加d或者D则是double,科

学计数法形式的浮点数也是double型的,而double的精度比float

高,将一个高精度的double赋值给一个低精度的float时需要进行

强制类型转换,反之则不需要。

22、Giventheuncompletedcodeofaclass:

classPerson{

Stringname,department;

intage;

publicPerson(Stringn){name=n;}

publicPerson(Stringn,inta){name=n;age=a;}

publicPerson(Stringn,Stringd,inta){

//doingthesameastwoargumentsversionofconstruct

or

//includingassignmentname=n,age=a

department=d;

)

)

Whichexpressioncanbeaddedatthe“doingthesamea

s…“partoftheconstructor?

A.Person(n,a);

B.this(Person(n,a));

C.this(n,a);

D.this(name,age).

(c)

题目:给出下面的不完整的类代码:

下面的哪些表达式可以加到构造方法中的"doingthesamea

s...”处?

在同一个类的不同构造方法中调用该类的其它构造方法需要使

用this(…)的形式,而且必须是在构造方法的第一行调用,这个和

普通的方法重载调用的方式不同,普通的方法可以直接使用方法名加

参数来调用,而且调用位置没有限制,因此答案A是不行的,B的语

法就是错误的,D的错误在于在父类型的构造函数被调用前不能引用

类的成员。构造方法是一个类对象实例化的起点(虽然严格来说首先

执行的并不是构造方法的第一个语句,而是内存的分配),因此在构

造方法中不能将成员作为参数引用。

23^Whichofthefollowingstatementsaboutvariablesa

ndtheirscopesaretrue?

A.Instancevariablesaremembervariablesofaclass.

B.Instancevariablesaredeclaredwiththestatickeyw

ord.

C.Localvariablesdefinedinsideamethodarecreated

whenthemethodisexecuted.

D.Localvariablesmustbeinitializedbeforetheyare

used.

(acd)

题目:下面关于变量及其范围的陈述哪些是对的。

A.实例变量是类的成员变量。

B.实例变量用关键字static声明。

C.在方法中定义的局部变量在该方法被执行时创建

D.局部变量在使用前必须被初始化。

类中有儿种变量,分别是:局部变量(英文可以为:local'aut

omatic\temporary\stackvariable)是定义在方法里的变量;实例

变量(英文为:instancevariable)是在方法外而在类声明内定义

的变量,有时也叫成员变量;类变量(英文为:classvariable)是

用关键字static声明的实例变量,他们的生存期分别是:局部变量

在定义该变量的方法被调用时被创建,而在该方法退出后被撤销;实

例变量在使用newXxxx()创建该类的实例时被创建,而其生存期和

该类的实例对象的生存期相同;类变量在该类被加载时被创建,不一

定要用newXxxx()创建,所有该类的实例对象共享该类变量,其生

存期是类的生存期。任何变量在使用前都必须初始化,但是需要指出

的是局部变量必须显式初始化,而实例变量不必,原始类型的实例变

量在该类的构造方法被调用时为它分配的缺省的值,整型是0,布尔

型是false,而浮点型是0.Of,引用类型(类类型)的实例变量的缺

省值是null(没有进行实际的初始化,对它的使用将引起NullPoin

tException),类变量的规则和实例变量一样,不同的是类变量的初

始化是在类被加载时。

24、publicvoidtest(){

try{oneMethodO;

System,out.printin(''condition1");

}catch(ArrayIndexOutOfBoundsExceptione){

System.out.printin(''condition2");

}catch(Exceptione){

System.out.printin(''condition3");

}finally{

System.out.println(z/finally,/);

)

)

WhichwilldisplayifoneMethodrunnormally?

A.condition1

B.condition2

C.condition3

D.finally

(ad)

题目:在oneMethod()方法运行正常的情况下将显示什么?

如果tiy块中的语句在执行时发生异常,则执行从该处中断而进

入catch块,根据异常的类型进行匹配,最前面的优先进行匹配比较,

只要该异常是catch中指定的异常的子类就匹配成功进而执行相应

的catch中的内容,而finally块中的内容无论是否发生异常都将被

执行。

25、Giventhefollowingcode:

publicclassTest{

voidprintValue(intm){

do{System,out.printin(//Thevalueis"+m);

)

while(一m>10)

)

publicstaticvoidmain(Stringarg[]){

inti=10;

Testt=newTest();

t.printValue(i);

)

)

Whichwillbeoutput?

A.Thevalueis8

B.Thevalueis9

C.Thevalueis10

D.Thevalueis11

(c)

题目:给出下面的代码:

输出将是什么?

此题考察的是do…while循环和一操作符的知识,do…whil

e最少被执行一次,在执行完do中的内容后判断while中的条件是

否为true,如果为true的话就再执行do中的内容,然后再进行判

断,以此类推直到while的判断为false时退出循环执行循环后面的

内容,而一操作符的规则是在变量右边的一将先进行运算,然后才

是使变量的值减一,而在变量左边的是先将变量的值减一再运算

26>Whichofthefollowingstatementsaboutdeclarationare

true?

A.Declarationofprimitivetypessuchasboolean,byte

andsoondoesnotallocatememoryspaceforthevariable.

B.Declarationofprimitivetypessuchasboolean,byte

andsoonallocatesmemoryspaceforthevariable.

C.DeclarationofnonprimitivetypessuchasString,Ve

ctorandsoondoesnotallocatememoryspacefortheobjec

t.

D.DeclarationofnonprimitivetypessuchasString,Ve

ctoranssoonallocatesmemoryspacefortheobject.

(ad)

题目:下面的有关声明的哪些叙述是对的。

A.对原始数据类型例如boolean,byte的变量的声明不会为该

变量分配内存空间。

B.对原始数据类型例如boolean,byte的变量的声明将为之分

配内存空间。

C.非原始数据类型例如String,Vector的变量的声明不会为该

对象分配内存。

D.非原始数据类型例如String,Vector的变量的声明会为该对

象分配内存。

对原始数据类型的变量的声明将为之分配内存并赋予一个缺省

值,参见23题的叙述,而非原始数据类型的变量必须用newXxxx()

分配内存及初始化。但是严格来讲此题的答案有待确定,因为只有原

始类型的实例变量和类变量的声明在类对象被创建/类被加载时完成

内存的自动分配,而原始类型的局部变量必须显式初始化,从这点来

看原始类型的局部变量没有被自动分配内存,SL275中只提出了非原

始数据类型的变量必须使用newXxxx()完成内存的分配而没有指出

原始数据类型的变量是否在声明时即自动进行内存分配,而从局部变

量不能在显式初始化前使用这点来看在声明时没有进行内存分配。因

此答案a的正确性还有待官方的确定。

27、IntheJavaAPIdocumentationwhichsectionsarein

eludedinaclassdocument?

A.Thedescriptionoftheclassanditspurpose

B.Alistofmethodsinitssuperclass

C.Alistofmembervariable

D.Theclasshierarchy

(acd)

题目:在JavaAPI文档中下面的哪些部分被包括在内

A.类及用途的描述

B.父类的方法的列表

C.成员变量的列表

D.类层次

类文档的内容主要是:类层次、类及用途描述、成员变量列表、

构造方法列表、成员方法列表、从类层次上继承的方法列表、成员变

量的详细说明、构造方法详细说明、成员方法详细说明。

28、Giventhefollowingcode:

1)publicvoidmodify(){

2)inti,j,k;

3)i=100;

4)while(i>0){

5)j=i*2;

6)System.out.printin("Thevalueofjis"+j);

7)k=k+1;

8)i-;

9)}

10))

Whichlinemightcauseanerrorduringcompilation?

A.line4

B.line6

C.line7

D.line8

(c)

题目:给出下面的代码:

・・・

哪些行在编译时可能产生错误。

这个问题在前面有关变量的类型及其作用域的问题中讨论过,局

部变量在使用前必须显式初始化,而代码中的变量k在使用前没有。

29、Whichofthefollowingstatementsaboutvariablesa

ndscopearetrue?

A.Localvariablesdefinedinsideamethodaredestroye

dwhenthemethodisexited.

B.Localvariablesarealsocalledautomaticvariables.

C.Variablesdefinedoutsideamethodarecreatedwhenthe

objectisconstructed.

D.Amethodparametervariablecontinuestoexistfora

slongastheobjectisneededinwhichthemethodisdefin

ed.

(abc)

题目:下面有关变量及其作用域的陈述哪些是对的。

A.在方法里面定义的局部变量在方法退出的时候被撤销。

B.局部变量也叫自动变量。

C.在方法外面定义的变量(译注:即实例变量)在对象被构造

时创建。

D.在方法中定义的方法的参变量只要该对象被需要就一直存

在。

本题还是讨论变量的类型及作用域,参看前面的叙述。

30、Aclassdesignrequiresthatamembervariablecann

otbeaccessibledirectlyoutsidetheclass.Whichmodifier

shouldbeusedtoobtaintheaccesscontrol?

A.public

B.nomodifier

C.protected

D.private

(d)

题目:类的设计要求它的某个成员变量不能被外部类直接访问。

应该使用下面的哪些修饰符获得需要的访问控制。

这个在前面也有叙述,java有四种访问类型,分别为:public,

protected,default,private,其中public变量可以被所有的外部类

访问,而pretected的可以被同一个包及该类的子类访问,default

即没有任何修饰符的变量可以被同一个包中的类访问,而private变

量只能在被该类内部被访问。题目中的外部类应该理解为除该类自身

的所有其它类,因此只有使用private可以达到要求。

31>Giventhefollowingcodefragment:

1)Stringstr=null;

2)if((str!=null)&&(str.length()>10)){

3)System,out.printin(''morethan10");

4))

5)elseif((str!=null)&(str.length()<5)){

6)System,out.printin(/zlessthan5");

7)}

8)else{System,out.printIn(,,end/,);}

Whichlinewillcauseerror?

A.line1

B.line2

C.line5

D.line8

题目:给出下面的代码片断:

哪些行将导致错误。

此题需要将代码仔细看清楚,查询没有逻辑错误,if-else的

使用没有问题,也没有拼写错误,错误在于第5行的“与”操作符的

使用,逻辑操作符(logicaloperator)的“与"应该是&&,而&是

位逻辑操作符(bitwiselogicaloperator)的"与",使用的对象

不一样,逻辑操作符的“与”的左右操作数都应该是布尔型(logic

alboolan)的值,而位逻辑操作符的左右操作数都是整型(integr

al)值。

32>WhichstatementsaboutJavacodesecurityaretrue?

A.Thebytecodeverifierloadsallclassesneededfort

heexecutionofaprogram.

B.Executingcodeisperformedbytheruntimeinterpret

er.

C.Atruntimethebytecodesareloaded,checkedandrun

inaninterpreter.

D.Theclassloaderaddssecuritybyseparatingthenam

espacesfortheclassesofthelocalfilesystemfromthose

importedfromnetworksources.

(bed)

题目:下面有关java代码安全性的叙述哪些是对的。

A.字节码校验器加载查询执行需要的所有类。

B.运行时解释器执行代码。

C.在运行时,字节码被加载,验证然后在解释器里面运行。

D.类加载器通过分离本机文件系统的类和从网络导入的类增加

安全性。

SL275中描述的Java程序运行的过程是这样的:类加载器(cla

ssloader)加载程序运行所需要的所有类,它通过区分本机文件系

统的类和网络系统导入的类增加安全性,这可以限制任何的特洛伊木

马程序,因为本机类总是先被加载,一旦所有的类被加载完,执行文

件的内存划分就固定了,在这个时候特定的内存地址被分配给对应的

符号引用,查找表(lookuotable)也被建立,由于内存划分发生在

运行时,解释器在受限制的代码区增加保护防止未授权的访问;然后

字节码校验器(bytecodeverifier)进行校验,主要执行下面的检

查:类符合JVM规范的类文件格式,没有违反访问限制,代码没有造

成堆栈的上溢或者下溢.,所有操作代码的参数类型都是正确的,没有

非法的数据类型转换(例如将整型数转换成对象类型)发生;校验通

过的字节码被解释器(interpreter)执行,解释器在必要时通过运

行时系统执行对底层硬件的合适调用。后三个答案是SL275中的原

话。

33>Giventhefollowingcode:

publicclassPerson{

staticintarr[]=newint[10];

publicstaticvoidmain(Stringa[]){

System.out.printin(arr[1];)

)

)

Whichstatementiscorrect?

A.Whencompilationsomeerrorwilloccur.

B.Itiscorrectwhencompilationbutwillcauseerror

whenrunning.

C.Theoutputiszero.

D.Theoutputisnull.

题目:给出下面的代码:

那个叙述是对的。

A.编译时将发生错误。

B.编译时正确但是运行时出错。

C.输出为0。

D.输出为null

int型数组是类对象,它在类被加载时完成初始化,在前面题目

中已经有叙述,由于是原始数据类型int,其初始值为0。

34^Giventhefollowingcode:

publicclassPerson{

intarr[]=newint[10];

publicstaticvoidmain(Stringa[]){

System.out.printin(arr[1]);

)

)

Whichstatementiscorrect?

A.Whencompilationsomeerrorwilloccur.

B.Itiscorrectwhencompilationbutwillcauseerror

whenrunning.

C.Theoutputiszero.

D.Theoutputisnull.

(a)

给出下面的代码:

哪些叙述是对的。

A.编译时出错。

B.编译时正确而运行时出错。

C.输出0。

D.输出nul1o

实例变量在类的一个实例构造时完成初始化,而且在类的静态方

法中不能直接访问类的非静态成员而只能访问类成员(像上题中一

样),类的普通方法可以访问类的所有成员和方法,而静态方法只能

访问类的静态成员和方法,因为静态方法属于类,而普通方法及成员

变量属于类的实例,类方法(静态方法)不能使用属于某个不确定的

类的实例的方法和变量,在静态方法里面没有隐含的this,而普通

方法有。

35>publicclassParent{

publicintaddValue(inta,intb){

ints;

s=a+b;

returns;

)

)

classChildextendsParent{

)

WhichmethodscanbeaddedintoclassChi1d?

A.intaddValue(inta,intb){//dosomething...)

B.publicvoidaddValue(){//dosomething...}

C.publicintaddValue(inta){//dosomething...)

D.publicintaddValue(inta,intb)throwsMyExceptio

n{//dosomething...)

(be)

题目:哪些方法可以加入类Child中。

此题涉及方法重载(overload),方法重写(override)以及类

派生时方法重写的规则。方法重载的规则是:一、参数列表必须不同,

个数的不同完全可以,如果个数相同则参数类型的不同不能引起歧

意,例如int和long,float和double就不能作为唯一的类型不同;

二、返回值可以不同,但是不能是重载时唯一的不同点(这点和C++

中不同,C++中返回类型必须一致)。方法重写发生在类继承时,子

类可以重写一个父类中已有的方法,必须在返回类型和参数列表一样

时才能说是重写,否则就是重载,java中方法重写的一个重要而且

容易被忽略的规则是重写的方法的访问权限不能比被重写的方法的

访问权限低!重写的另一个规则是重写的方法不能比被重写的方法抛

弃(throws)更多种类的异常,其抛弃的异常只能少,或者是其子类,

不能以抛弃异常的个数来判断种类,而应该是异常类层次结果上的种

类。此题中答案a的错误就是重写的访问权限比被重写的方法的低,

而b,c都属于重载,d的错误在于比被重写的方法抛弃了更多种类的

异常。

36、Amembervariabledefinedinaclasscanbeaccessedon

lybytheclassesinthesamepackage.Whichmodifiershoul

dbeusedtoobtaintheaccesscontrol?

A.private

B.nomodifier

C.public

D.protected

(b)

题目:一个类中定义的成员变量只能被同一包中的类访问。下面

的哪些修饰符可以获得需要的访问控制。

参看前面的题目中的叙述。

37、ApublicmembervairablecalledMAXLENGTHwhichis

inttype,thevalueofthevariableremainsconstantvalue

100.Useashortstatementtodefinethevariable.

A.publicintMAX_LENGTH=100;

B.finalintMAX_LENGTH=100;

C.finalpublicintMAX_LENGTH=100;

D.publicfinalintMAX_LENGTH=100.

(d)

题目:共有成员变量MAX一LENGTH是一个int型值,变量的值保

持常数值100o使用一个短声明定义这个变量。

Java中共有变量使用public定义,常量变量使用final,另外

注意的是修饰符的顺序,一个最完整的修饰是publicstaticfinal

intvarial_a=100;这个顺序不能错,这和c++中也是不同的。而答

案c恰恰错在修饰符的顺序上。

38、Whichexpressionsarecorrecttodeclareanarrayo

f10Stringobjects?

A.charstr[];

B.charstr[][];

C.Stringstr[];

D.Stringstr[10];

(c)

题目:哪些表达式是声明一个含有10个String对象的数组。

严格来说这个题目没有给出一个正确的答案,唯一比较正确的是

c,而完全满足题目要求的应该是:Stringstr[l=newString[10];

注意答案d的形式是不对的,这和C++也是不同的。

39、WhichfragmentsarecorrectinJavasourcefile?

A.packagetestpackage;

publicclassTest{//dosomething...}

B.importjava.io.*;

packagetestpackage;

publicclassTest{//dosomething...}

C.importjava.io.*;

classPerson{//dosomething...}

publicclassTest{//dosomething...}

D.importjava.io.*;

importjava.awt.*;

publicclassTest{//dosomething...}

(acd)

题目:下面的那个java源文件代码片断是对的。

Java中的package语句必须是源文件中除去说明以外的第一条

语句,导入包语句可以有几个,但是必须位于package语句之后,其

它类定义之前,一个源文件中可以有几个类,但最多只能有一个是P

ublic的,如果有,则源文件的文件名必须和该类的类名相同。

40:

Strings="hello”;

Stringt="hello”;

charc[]=

Whichreturntrue?

A.s.equals(t);

B.t.equals(c);

C.s==t;

D.t.equals(newStringCzhello//));

E.t==c.

(acd)

题目:哪些返回true。

这个在前面第10题的equals。方法和==操作符的讨论中论述

过。==操作符比较的是操作符两端的操作数是否是同一个对象,而S

tring的equals。方法比较的是两个String对象的内容是否一样,

其参数是一个String对象时才有可能返回true,其它对象都返回假。

需要指出的是由于s和t并非使用new创建的,他们指向内存池中的

同一个字符串常量,因此其地址实际上是相同的(这个可以从反编译

一个简单的测试程序的结果得到,限于篇幅不列出测试代码和反编译

的分析),因此答案c也是正确的。

41>Whichofthefollowingstatementsarelegal?

A.long1=4990;

B.inti=4L;

C.floatf=1.1;

D.doubled=34.4;

E.doublet=0.9F.

(ade)

题目:下面的哪些声明是合法的。

此题的考点是数字的表示法和基本数据类型的类型自动转换,没

有小数点的数字被认为是int型数,带有小数点的数被认为是doubl

e型的数,其它的使用在数字后面加一个字母表示数据类型,加1或

者L是long型,加d或者D是double,加f或者F是float,可以

将低精度的数字赋值给高精度的变量,反之则需要进行强制类型转

换,例如将int,short,byte赋值给long型时不需要显式的类型转换,

反之,将long型数赋值给byte,short,int型时需要强制转换(int

a=(int)123L;)。

42、

publicclassParent{

intchange(){••,}

)

classChildextendsParent{

)

WhichmethodscanbeaddedintoclassChild?

A.publicintchange(){}

B.intchang(inti){}

C.privateintchange(){}

D.abstractintchang(){}

(ab)

题目:哪些方法可被加入类Child。

这个题目的问题在第35题中有详尽的叙述。需要注意的是答案

D的内容,子类可以重写父类的方法并将之声明为抽象方法,但是这

引发的问题是类必须声明为抽象类,否则编译不能通过,而且抽象方

法不能有方法体,也就是方法声明后面不能带上那两个大括号({}),

这些D都不能满足。

43、

classParent{

Stringone,two;

publicParent(Stringa,Stringb){

one=a;

two

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论