第1页共30页60道SCJP考试真题精解1.Whichofthefollowingrangeofshortiscorrect?A.-27--27-1B.0--216-1C.?215--215-1D.?231--231-1翻译下面哪些是short型的取值范围。答案C解析短整型的数据类型的长度是16bits,有符号。另外需要说明的是java中所有的整(Integral)数(包括byte,short,int,long)全是有符号的。2.Whichdeclarationsofidentifiersarelegal?A.$personsB.TwoUsersC.*pointD.thisE._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;第2页共30页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成员变量,但是在静态方法中不能使用类中的非静态成员。第3页共30页C:a是类Person的private成员,在类外不能直接引用。D:change(intm)方法是public方法,并且返回一个int型值,可以通过类的实例变量p引用并赋值给一个int型变量。E:b是类Teacher的public成员变量,且是int型,可以通过类的实例变量t引用并赋值给一个int型变量。6.Whichlayoutmanagerisusedwhentheframeisresizedthebuttons'spositionintheFramemightbechanged?A.BorderLayoutB.FlowLayoutC.CardLayoutD.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分配内存空间。第4页共30页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.010B.0x10C.08D.0x8翻译下面的哪些答案可以用以表示八进制值8。答案A解析八进制值以0开头,以0x开头的为十六进制值,八进制中不能出现数字8,最大只有7。9.WhicharenotJavakeywords?A.TRUEB.sizeofC.constD.superE.void翻译哪些不是Java关键字。答案A,B解析A:不是,Java中有true,但是这也不是关键字而是字面量(literal)。B:不是,Java中不需要这个操作符,所有的类型(原始类型)的大小都是固定的。C、D、E都是,需要说明的是const是java中未被使用的关键字。10.Whichofthefollowingstatementsaretrue?第5页共30页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的唯一条件是两个变量指向同一对象。从这个意义上来说选择给定的答案。从更严格的意义来说正确答案应该只有d11.Whichstatementsaboutinheritancearetrue?A.InJavaprogramminglanguageonlyallowssingleinheritance.B.InJavaprogramminglanguageallowsaclasstoimplementonlyoneinterface.C.InJavaprogramminglanguageaclasscannotextendaclassandimplementainterfacetogether.D.InJavaprogramminglanguagesingleinheritancemakescodemorereliable.翻译下面关于继承的哪些叙述是正确的。A.在java中只允许单一继承。B.在java中一个类只能实现一个接口。C.在java中一个类不能同时继承一个类和实现一个接口。D.java的单一继承使代码更可靠。答案A,D解析在java中一个类只能有一个直接父类,但是可以实现多个接口,在继承的同时可以实现接口,之所以取消多继承的原因是多继承使得代码产生很多问题,而使用单一继承则可以使代码更可靠。12.第6页共30页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.online2B.online3C.online6D.online7翻译第十行的声明将调用哪些方法。答案D解析变量t是一个Person对象,但是它是用Teacher实例化的,这个问题涉及到java的编译时多态和运行时多态的问题,就编译时多态来说,t实际上是一个Person类,这涉及到类型的自动转换(将一个子类的实例赋值给一个父类的变量是不用进行强制类型转换,反之则需要进行强制类型转换,而且被赋值的变量实际上应该是一个子类的对象),如果对t调用了子类中新增的方法则造成编译时错误编译将不能通过,而在运行时,运行时系统将根据