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

下载本文档

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

文档简介

JAVA认证历年真题:SCJP考试真题和解析(2)

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,long)全是有符号的。

2.Whichdeclarationsofidentifiersarelegal?

A.$persons

B.TwoUsers

C.*point

D.this

E._endline

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

答案A,B,E

解析Java的标识符可以以一个Unicode字符,下滑线(_),美元符($)开始,后续字

符可以是前面的符号和数字,没有长度限制,大小写敏感,不能是保留字。

3.Whichstatementofassigningalongtypevariabletoahexadecimalvalue

iscorrect?

A.longnumber=345L;

B.longnumber=0345;

C.longnumber=0345L;

D.longnumber=0x345L

翻译哪些是将一个卜六进制值赋值给一个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

I

)

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.Whichlayoutmanagerisusedwhentheframeisresizedthebuttons*s

positionintheFramemightbechanged?

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.Thedeclarationonline2doesnotallocatememoryspaceforthe

variablemyVect.

Thedeclarationonline2allocatesmemoryspaceforareferencetoa

Vectorobject.

C.Thestatementonline2createsanobjectofclassVector.

D.Thestatementonline3createsanobjectofclassVector.

E.Thestatementonline3allocatesmemoryspaceforanobjectofclass

Vector

翻译

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

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

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

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

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

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

答案A,D,E

解析

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

下的操作:

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

2.执行类体中的初始化。(例如在类中有一个成员声明inta=10;在第一步后a=0,执

行到第二步后a=10)

3.执行构造函数。

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

8.Whichofthefollowingansweriscorrecttoexpressthevalue8inoctal

number?

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,但是这也不是关键字而是字面量(literal)。

B:不是,Java中不需要这个操作符,所有的类型(原始类型)的大小都是固定的。

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

10.Whichofthefollowingstatementsaretrue?

A.Theequals()methoddeterminesifreferencevaluesrefertothesame

object.

B.The==operatordeterminesifthecontentsandtypeoftwoseparate

objectsmatch.

C.Theequals()methodreturnstrueonlywhenthecontentsoftwoobjects

match.

D.TheclassFileoverridesequals()toreturntrueifthecontentsand

typeoftwoseparateobjectsmatch.

翻译

下面的哪些叙述为真。

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.InJavaprogramminglanguageonlyallowssingleinheritance.

B.InJavaprogramminglanguageallowsaclasstoimplementonlyone

interface.

C.InJavaprogramminglanguageaclasscannotextendaclassandimplement

ainterfacetogether.

D.InJavaprogramminglanguagesingleinheritancemakescodemore

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)publicvoidprintValueO{/*...*/}

7)publicvoidprintValue(inti){/*…*/}

8)publicstaticvoidmain(Stringargs[]){

9)Persont=newTeacher();

10)t.printValue(10);

ID)

⑵}

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,double。注意这些是大小写敏感的,而

Boolean是booelan的封装类(wrapperclass)。

14.Usetheoperators〃<<〃,〃>>〃,whichstatementsaretrue?

A.00000100000000000000000000000000«5gives

10000000000000000000000000000000

B.00000100000000000000000000000000«5gives

1111110000000000oooooooooooooooo

C.1100OOOOOOOOOOOOOOOOOOOOOOOO0000»5gives

11111110oooooooooooooooooooooooo

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.Whichkeywordshouldbeusedtoenableinteractionwiththelockofan

object?Theflagallowsexclusiveaccesstothatobject.

A.transient

B.synchronized

C.serialize

D.static

翻译

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

答案B

解析由于java是多线程的语言,多个线程可以“同时”访问同一数据区,而在处理

某些数据时不希望其它的线程修改那些数据的值或者某些操作是不可打断的,要做到这个,

可以使用synchronized关键字声明这一点。

17.WhichisthereturntypeofthemethodmainO?

A.int

B.void

C.boolean

D.static

翻译

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

答案B

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

publicstaticvoidmain(Stringargs[])»但是严格来讲这个题目的答案还可以加上a

和c,因为并没有限定是程序入口的main。方法,而main。方法是可以重载的。一般意义

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

18.Giventhefollowingcode:

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

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

else{System,out.println(〃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.GiventhefollowingexpressionaboutTextFieldwhichuseaproportional

pitchfont.

TextFieldt=newTextField(z/theyaregood”,40);

Whichstatementistrue?

A.Thedisplayedstringcanusemultiplefonts.

B.Themaximumnumberofcharactersinalinewillbe40.

C.Thedisplayedwidthisexactly40characters.

D.Theusercaneditthecharacters.

翻译

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

哪些叙述是对的?

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

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

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

D.用户可以编辑字符。

答案D

解析对于TextField的该种形式的构造函数来说,前一个参数是文本域中初始的字

符串的显示值,而后一个是推荐的显示宽度,以列数表示,在构造文木域的时候会将这个

大小设置为最佳大小,如果容器的限制使得文本域不能显示这么多也没有办法,•殷来说

是比这个大小大的,而且即使宽度很小,你也可以在文本域的一行中输入很长的字符串,

只有你不使用回车,在超过显示宽度后文本域会自动出现水平滚动条(没有被设置为关闭,

缺省是不关闭的),而文本域的缺省编辑方式是可编辑的,一个文本域只能使用一种字体,

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

显示。

20.Whichstatementsaboutthegarbagecollectionaretrue?

A.Theprogramdevelopermustcreateathreadtoberesponsibleforfree

thememory.

B.Thegarbagecollectionwillcheckforandfreememorynolongerneeded.

C.Thegarbagecollectionallowtheprogramdevelopertoexplicityand

immediatelyfreethememory.

D.Thegarbagecollectioncanfreethememoryusedjavaobjectatexpect

time.

翻译

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

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

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

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

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

答案B

解析Java语言将内存分配和释放的工组交给了自己,程序员不必做这些工作,它提

供一个系统级的线程跟踪每个内存的分配,在JVM的空闲处理中,垃圾收集线程将检查和

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

动的,不需要分配和释放内存,也避免了内存泄漏。可以调用System.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){

//doingthesameastwoargumentsversionofconstructor

//includingassignmentname二n,age二a

department=d;

)

I

Whichexpressioncanbeaddedatthe“doingthesameas...partofthe

constructor?

A.Person(n,a);

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

C.this(n,a);

D.this(name,age).

(c)

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

下面的哪些表达式可以加到构造方法中的"doingthesameas...”处?

在同一个类的不同构造方法中调用该类的其它构造方法需要使用this(…)的形式,而

且必须是在构造方法的第一行调用,这个和普通的方法重载调用的方式不同,普通的方法

可以直接使用方法名加参数来调用,而且调用位置没有限制,因此答案A是不行的,B的

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

法是一个类对象实例化的起点(虽然严格来说首先执行的并不是构造方法的第一个语句,而

是内存的分配),因此在构造方法中不能将成员作为参数引用。

23、Whichofthefollowingstatementsaboutvariablesandtheirscopesare

true?

A.Instancevariablesaremembervariablesofaclass.

B.Instancevariablesaredeclaredwiththestatickeyword.

C.Localvariablesdefinedinsideamethodarecreatedwhenthemethodis

executed.

D.Localvariablesmustbeinitializedbeforetheyareused.

(acd)

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

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

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

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

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

类中有几种变量,分别是:局部变量(英文可以为:

local\automatic\temporary\stackvariable)是定义在方法里的变量;实例变量(英文为:

instancevariable)是在方法外而在类声明内定义的变量,有时也叫成员变量;类变量(英

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

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

XxxxO创建该类的实例时被创建,而其生存期和该类的实例对象的生存期相同;类变量在该

类被加载时被创建,不一定要用newXxxxO创建,所有该类的实例对象共享该类变量,其

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

式初始化,而实例变量不必,原始类型的实例变量在该类的构造方法被调用时为它分配的

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

的缺省值是null(没有进行实际的初始化,对它的使用将引起NullPointException),类变

量的规则和实例变量一样,不同的是类变量的初始化是在类被加载时。

24、publicvoidtest(){

try{oneMethodO;

System,out.printin(^condition1〃);

}catch(ArrayIndexOutOfBoundsExceptione){

System,out.printin(,zcondition2〃);

}catch(Exceptione){

System,out.printin(^condition3〃);

}finally{

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

}

WhichwilldisplayifoneMethodrunnormally?

A.condition1

B.condition2

C.condition3

D.finally

(ad)

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

如果by块中的语句在执行时发生异常,则执行从该处中断而进入catch块,根据异

常的类型进行匹配,最前面的优先进行匹配比较,只要该异常是catch中指定的异常的子

类就匹配成功进而执行相应的catch中的内容,而finally块中的内容无论是否发生异常

都将被执行。

25、Giventhefollowingcode:

publicclassTest{

voidprintValue(intm){

do{System,out.println(,?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…while最少被执行一次,在

执行完do中的内容后判断while中的条件是否为true,如果为true的话就再执行do中

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

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

而在变量左边的是先将变量的值减•再运算

26、Whichofthefollowingstatementsaboutdeclarationaretrue?

A.Declarationofprimitivetypessuchasboolean,byteandsoondoesnot

allocatememoryspaceforthevariable.

B.Declarationofprimitivetypessuchasboolean,byteandsoonallocates

memoryspaceforthevariable.

C.DeclarationofnonprimitivetypessuchasString,Vectorandsoondoes

notallocatememoryspacefortheobject.

D.DeclarationofnonprimitivetypessuchasString,Vectaonsrsoon

allocatesmemoryspacefortheobject.

(ad)

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

A.对原始数据类型例如boolean,byte的变量的声明不会为该变量分配内存空间。

B.对原始数据类型例如boolean,byte的变量的声明将为之分配内存空间。

C.非原始数据类型例如String,Vector的变量的声明不会为该对象分配内存。

D.非原始数据类型例如String,Vector的变量的声明会为该对象分配内存。

对原始数据类型的变量的声明将为之分配内存并赋予一个缺省值,参见23题的叙述,

而非原始数据类型的变量必须用newXxxx()分配内存及初始化。但是严格来讲此题的答案

有待确定,因为只有原始类型的实例变量和类变量的声明在类对象被创建/类被加载时完成

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

量没有被自动分配内存,SL275中只提出了非原始数据类型的变量必须使用newXxxx()完

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

部变量不能在显式初始化前使用这点来看在声明时没有进行内存分配。因此答案a的正确

性还有待官方的确定。

27、IntheJavaAPIdocumentationwhichsectionsareincludedinaclass

document?

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、Whichofthefollowingstatementsaboutvariablesandscopearetrue?

A.Localvariablesdefinedinsideamethodaredestroyedwhenthemethodis

exited.

B.Localvariablesarealsocalledautomaticvariables.

C.Variablesdefinedoutsideamethodarecreatedwhentheobjectis

constructed.

I).Amethodparametervariablecontinuestoexistforaslongastheobject

isneededinwhichthemethodisdefined.

(abc)

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

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

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

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

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

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

30、Aclassdesignrequiresthatamembervariablecannotbeaccessible

directlyoutsidetheclass.Whichmodifiershouldbeusedtoobtaintheaccess

control?

A.public

B.nomodifier

C.protected

I),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(,zmorethan10〃);

4))

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

6)System,out.printIn(^lessthan5〃);

7))

8)else(System,out.println(〃end〃);)

Whichlinewillcauseerror?

A.line1

B.line2

C.line5

D.line8

(c)

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

哪些行将导致错误。

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

有拼写错误,错误在于第5行的“与”操作符的使用,逻辑操作符(logicaloperator)的

“与"应该是而&是位逻辑操作符(bitwiselogicaloperator)的“与”,使用的对象

不一样,逻辑操作符的“与”的左右操作数都应该是布尔型Qogicalboolan)的值,而位

逻辑操作符的左右操作数都是整型(integral)值。

32>WhichstatementsaboutJavacodesecurityaretrue?

A.Thebytecodeverifierloadsallclassesneededfortheexecutionofa

program.

B.Executingcodeisperformedbytheruntimeinterpreter.

C.Atruntimethebytecodesareloaded,checkedandruninaninterpreter.

D.Theclassloaderaddssecuritybyseparatingthenamespacesforthe

classesofthelocalfilesystemfromthoseimportedfromnetworksources.

(bed)

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

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

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

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

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

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

行所需要的所有类,它通过区分本机文件系统的类和网络系统导入的类增加安全性,这可

以限制任何的特洛伊木马程序,因为本机类总是先被加载,一旦所有的类被加载完,执行

文件的内存划分就固定了,在这个时候特定的内存地址被分配给对应的符号引用,查找表

(lookuotable)也被建立,由于内存划分发生在运行时,解释器在受限制的代码区增加保

护防止未授权的访问;然后字节码校验器(bytecodeverifier)进行校验,主要执行下面的

检查:类符合JVM规范的类文件格式,没有违反访问限制,代码没有造成堆栈的上溢或者

下溢,所有操作代码的参数类型都是正确的,没有非法的数据类型转换(例如将整型数转换

成对象类型)发生;校验通过的字节码被解释器(interpreter)执行,解释器在必要时通过运

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

33^Giventhefollowingcode:

publicclassPerson(

staticintarr[]=newint[10];

publicstaticvoidmain(Stringa[]){

System,out.println(arr[l];)

}

}

Whichstatementiscorrect?

A.Whencompilationsomeerrorwilloccur.

B.Itiscorrectwhencompilationbutwillcauseerrorwhenrunning.

C.Theoutputiszero.

D.Theoutputisnull.

(c)

题目:给出下面的代码:

那个叙述是对的。

A.编译时将发生错误。

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

C.输出为0。

D.输出为null

int型数组是类对象,它在类被加载时完成初始化,在前面题目中已经有叙述,由于

是原始数据类型int,其初始值为0。

34>Giventhefollowingcode:

publicclassPerson(

intarr[]=newint[10];

publicstaticvoidmain(Stringa[]){

System,out.println(arr[l]);

}

}

Whichstatementiscorrect?

A.Whencompilationsomeerrorwilloccur.

B.Itiscorrectwhencompilationbutwillcauseerrorwhenrunning.

C.Theoutputiszero.

D.Theoutputisnull.

(a)

给出下面的代码:

哪些叙述是对的。

A.编译时出错。

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

C.输出0。

D.输出null。

实例变量在类的一个实例构造时完成初始化,而且在类的静态方法中不能直接访问类

的非静态成员而只能访问类成员(像上题中一样),类的普通方法可以访问类的所有成员和

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

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

量,在静态方法里面没有隐含的this,而普通方法有。

35、publicclassParent{

publicintaddValue(inta,intb){

ints;

s=a+b;

returns;

}

)

classChildextendsParent{

I

WhichmethodscanbeaddedintoclassChild?

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

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

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

D.publicintaddValue(inta,intb)throwsMyException{//dosomething...}

(be)

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

此题涉及方法重载(overload),方法重写(override)以及类派生时方法重写的规则。

方法重载的规则是:一、参数列表必须不同,个数的不同完全可以,如果个数相同则参数

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

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

型必须一致)。方法重写发生在类继承时,子类可以重写••个父类中已有的方法,必须在返

回类型和参数列表一样时才能说是重写,否则就是重载,java中方法重写的一个重要而且

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

个规则是重写的方法不能比被重写的方法抛弃(throws)更多种类的异常,其抛弃的异常只

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

种类。此题中答案a的错误就是重写的访问权限比被重写的方法的低,而b,c都属于重载,

d的错误在于比被重写的方法抛弃了更多种类的异常。

36^Amembervariabledefinedinaclasscanbeaccessedonlybythe

classesinthesamepackage.Whichmodifiershouldbeusedtoobtaintheaccess

control?

A.private

B.nomodifier

C.public

D.protected

(b)

题目:一个类中定义的成员变量只能被同一包中的类访问。下面的哪些修饰符可以获

得需要的访问控制。

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

37、ApublicmembervairablecalledMAXLENGTHwhichisinttype,thevalue

ofthevariableremainsconstantvalue100.Useashortstatementtodefinethe

variable.

A.publicintMAX_LENGTH=100;

B.finalintMAX_LENGTH=100;

C.finalpublicintMAX_LENGTH=100;

D.publicfinalintMAX_LENGTH=100.

(d)

题目:共有成员变量MAXLENGTH是一个int型值,变量的值保持常数值100。使用一

个短声明定义这个变量。

Java中共有变量使用public定义,常量变量使用final,另外注意的是修饰符的顺序,

•个最完整的修饰是publicstaticfinalintvarial_a=100;这个顺序不能错,这和c++

中也是不同的。而答案c恰恰错在修饰符的顺序上。

38、Whichexpressionsarecorrecttodeclareanarrayof10Stringobjects?

A.charstr[];

B.charstr□口;

C.Stringstr[];

D.Stringstr[10];

(c)

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

严格来说这个题目没有给出一个正确的答案,唯一比较正确的是c,而完全满足题目

要求的应该是:Stringstr□二newString[10];

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

39WhichfragmentsarecorrectinJavasourcefile?

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语句之后,其它类定义之前,一个源文件中可以有几个类,

但最多只能有一个是public的,如果有,则源文件的文件名必须和该类的类名相同。

40:

Strings=〃hello〃;

Stringt="hello”;

charc[]={,h,,e'17,'],,,o'};

Whichreturntrue?

A.s.equals(t);

B.t.equals(c);

C.s二二t;

D.t.equals(newString(〃he]lo〃));

E.t==c.

(acd)

题目:哪些返回true。

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

操作符两端的操作数是否是同一个对象,而String的equals。方法比较的是两个String

对象的内容是否一样,其参数是一个String对象时才有可能返回true,其它对象都返回

假。需要指出的是由于s和t并非使用

温馨提示

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

评论

0/150

提交评论