SCJP考试真题和解析.docx
《SCJP考试真题和解析.docx》由会员分享,可在线阅读,更多相关《SCJP考试真题和解析.docx(41页珍藏版)》请在冰豆网上搜索。
SCJP考试真题和解析
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.Whichstatementofassigningalongtypevariabletoahexadecimalvalueiscorrect?
A.longnumber=345L;
B.longnumber=0345;
C.longnumber=0345L;
D.longnumber=0x345L
翻译哪些是将一个十六进制值赋值给一个long型变量。
答案 D
解析 十六进制数以0x开头,long型数以L(大小写均可,一般使用大写,因为小写的l和数字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:
toUpperCase()方法是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.Whichlayoutmanagerisusedwhentheframeisresizedthebuttons'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.Thedeclarationonline2doesnotallocatememoryspaceforthevariablemyVect.
B.Thedeclarationonline2allocatesmemoryspaceforareferencetoaVectorobject.
C.Thestatementonline2createsanobjectofclassVector.
D.Thestatementonline3createsanobjectofclassVector.
E.Thestatementonline3allocatesmemoryspaceforanobjectofclassVector
翻译
给出下面的代码片断。
。
。
下面的哪些陈述为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.Whichofthefollowingansweriscorrecttoexpressthevalue8inoctalnumber?
A.010
B.0x10
C.08
D.0x8
翻译
下面的哪些答案可以用以表示八进制值8。
答案 A
解析 八进制值以0开头,以0x开头的为十六进制值,八进制中不能出现数字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()methoddeterminesifreferencevaluesrefertothesameobject.
B.The==operatordeterminesifthecontentsandtypeoftwoseparateobjectsmatch.
C.Theequals()methodreturnstrueonlywhenthecontentsoftwoobjectsmatch.
D.TheclassFileoverridesequals()toreturntrueifthecontentsandtypeoftwoseparateobjectsmatch.
翻译
下面的哪些叙述为真。
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)publicvoidprintValue(){/*...*/}
7)publicvoidprintValue(inti){/*...*/}
8)publicstaticvoidmain(Stringargs[]){
9)Persont=newTeacher();
10)t.printValue(10);
11)}
12)}
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
11111100000000000000000000000000
C.11000000000000000000000000000000>>5gives
11111110000000000000000000000000
D.11000000000000000000000000000000>>5gives
00000110000000000000000000000000
翻译
使用"<<"和">>"操作符的哪些陈述是对的。
答案 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.Whichisthereturntypeofthemethodmain()?
A.int
B.void
C.boolean
D.static
翻译
main()方法的返回类型是什么?
答案 B
解析 在java中,程序运行的入口就是main()方法,它必须是这样的形式:
publicstaticvoidmain(Stringargs[])。
但是严格来讲这个题目的答案还可以加上a和c,因为并没有限定是程序入口的main()方法,而main()方法是可以重载的。
一般意义上的main()当然就是指我们刚开始所说的main()方法了。
18.Giventhefollowingcode:
if(x>0){System.out.println("first");}
elseif(x>-3){System.out.println("second");}
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("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.Thegarbagecollectionc