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

更新时间:2023-10-26 05:11:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

1. Which of the following range of short is correct? A. -27 -- 27-1 B. 0 -- 216-1 C. ?215 -- 215-1 D. ?231 -- 231-1

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

解析 短整型的数据类型的长度是16 bits,有符号。另外需要说明的是java中所有的整(Integral)数(包括byte,short,int,long)全是有符号的。 2. Which declarations of identifiers are legal? A. $persons B. TwoUsers C. *point D. this E. _endline

翻译下面哪些是合法的标识符。 答案 A,B,E

解析 Java的标识符可以以一个Unicode字符,下滑线(_),美元符($)开始,后续字符可以是前面的符号和数字,没有长度限制,大小写敏感,不能是保留字。

3. Which statement of assigning a long type variable to a hexadecimal value is correct?

A. long number = 345L;

B. long number = 0345; C. long number = 0345L; D. long number = 0x345L

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

解析 十六进制数以0x开头,long型数以L(大小写均可,一般使用大写,因为小写的l和数字1不易区分)。

4.Which of the following fragments might cause errors? A. String s = \ String t = \ String k = s + t;

B. String s = \ String t; t = s[3] + \

C. String s = \ String standard = s.toUpperCase(); D. String s = \ String t = s - \

翻译下面的哪些程序片断可能导致错误。 答案 B,D 解析

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

B:String是一种Object,而不是简单的字符数组,不能使用下标运算符取其值的某个元素,错误。

C:toUpperCase()方法是String对象的一个方法,作用是将字符串的内容全部转换为大写并返回转换后的结果(String类型)。 D:String类型不能进行减(-)运算,错误。

5. Which are syntactically valid statement at// point x? class Person { private int a;

public int change(int m){ return m; } }

public class Teacher extends Person { public int b;

public static void main(String arg[]){ Person p = new Person(); Teacher t = new Teacher(); int i; // point x } } A. i = m; B. i = b; C. i = p.a;

D. i = p.change(30);

E. i = t.b.

翻译在// point x处的哪些申明是句法上合法的。 答案 D,E 解析

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

B:虽然b是类Teacher的public成员变量,但是在静态方法中不能使用类中的非静态成员。

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

D:change(int m)方法是public方法,并且返回一个int型值,可以通过类的实例变量p引用并赋值给一个int型变量。

E:b是类Teacher的public成员变量,且是int型,可以通过类的实例变量t引用并赋值给一个int型变量。

6. Which layout manager is used when the frame is resized the buttons's position in the Frame might be changed? A. BorderLayout B. FlowLayout C. CardLayout D. GridLayout

翻译当Frame的大小被改变时Frame中的按钮的位置可能被改变时使用的哪一个布局管理器。 答案 B 解析

A:该布局管理器将容器划分为五个部分,容器大小的改变不会影响其中的组件的位置而是影响他们的大小。

B:该布局管理器根据放入其中的组件的最合适大小调整组件的位置,根据组件放入的顺序安排,一行不能容纳时放入下一行,因此容器的大小改变可能改变组件的位置。 C:该布局管理器显示放入该容器的当前页中的组件,一次显示一个,容器大小的改变不能影响其中组件的位置。

D:该布局管理器将容器划分为固定的网格,组件加入后占据一个单元,各组件的相对位置不会因为容器的大小变化而变化,改变的只是组件的大小。 7. Given the following code fragment: 1) public void create() { 2) Vector myVect; 3) myVect = new Vector(); 4) }

Which of the following statements are true?

A. The declaration on line 2 does not allocate memory space for the variable myVect.

B. The declaration on line 2 allocates memory space for a reference to a Vector object.

C. The statement on line 2 creates an object of class Vector. D. The statement on line 3 creates an object of class Vector.

E. The statement on line 3 allocates memory space for an object of class Vector 翻译

给出下面的代码片断。。。下面的哪些陈述为true(真)? A. 第二行的声明不会为变量myVect分配内存空间。 B. 第二行的声明分配一个到Vector对象的引用的内存空间。

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

E. 第三行语句为一个Vector类对象分配内存空间。 答案 A,D,E 解析

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

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

2.执行类体中的初始化。(例如在类中有一个成员声明int a=10;在第一步后a=0 ,执行到第二步后a=10) 3.执行构造函数。

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

8. Which of the following answer is correct to express the value 8 in octal number? A. 010 B. 0x10 C. 08 D. 0x8 翻译

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

解析 八进制值以0开头,以0x开头的为十六进制值,八进制中不能出现数字8,最大只有7。

9. Which are not Java keywords?

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. Which of the following statements are true?

A. The equals() method determines if reference values refer to the same object.

B. The == operator determines if the contents and type of two separate objects match.

C. The equals() method returns true only when the contents of two objects match.

D. The class File overrides equals() to return true if the contents and type of two separate objects match. 翻译

下面的哪些叙述为真。

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

B. == 操作符判定两个分立的对象的内容和类型是否一致。 C. equals()方法只有在两个对象的内容一致时返回true。

D. 类File重写方法equals()在两个分立的对象的内容和类型一致时返回true。 答案 A,D

解析 严格来说这个问题的答案是不确定的,因为equals()方法是可以被重载的,但是按照java语言的本意来说:如果没有重写(override)新类的equals(),则该方法和 == 操作符一样在两个变量指向同一对象时返回真,但是java推荐的是使用equals()方法来判断两个对象的内容是否一样,就像String类的equals()方法所做的那样:判定两个String对象的内容是否相同,而==操作符返回true的唯一条件是两个变量指向同一对象。从这个意义上来说选择给定的答案。从更严格的意义来说正确答案应该只有d 11. Which statements about inheritance are true?

A. In Java programming language only allows single inheritance. B. In Java programming language allows a class to implement only one interface.

C. In Java programming language a class cannot extend a class and implement a interface together.

D. In Java programming language single inheritance makes code more reliable. 翻译

下面关于继承的哪些叙述是正确的。 A.在java中只允许单一继承。 B.在java中一个类只能实现一个接口。

C.在java中一个类不能同时继承一个类和实现一个接口。 D.java的单一继承使代码更可靠。

答案 A,D

解析 在java中一个类只能有一个直接父类,但是可以实现多个接口,在继承的同时可以实现接口,之所以取消多继承的原因是多继承使得代码产生很多问题,而使用单一继承则可以使代码更可靠。 12.

1) class Person {

2) public void printValue(int i, int j) {/*?*/ } 3) public void printValue(int i){/*...*/ } 4) }

5) public class Teacher extends Person { 6) public void printValue() {/*...*/ } 7) public void printValue(int i) {/*...*/} 8) public static void main(String args[]){ 9) Person t = new Teacher(); 10) t.printValue(10); 11) } 12) }

Which method will the statement on line 10 call? A. on line 2 B. on line 3 C. on line 6 D. on line 7 翻译

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

解析 变量t是一个Person对象,但是它是用Teacher实例化的,这个问题涉及到java的编译时多态和运行时多态的问题,就编译时多态来说,t实际上是一个Person类,这涉及到类型的自动转换(将一个子类的实例赋值给一个父类的变量是不用进行强制类型转换,反之则需要

进行强制类型转换,而且被赋值的变量实际上应该是一个子类的对象),如果对t调用了子类中新增的方法则造成编译时错误编译将不能通过,而在运行时,运行时系统将根据t实际指向的类型调用对应的方法,对于本例来说,t.print(10)将调用t实际指向的Teacher类的对应方法。在java中,可以用一个子类的实例实例化父类的一个变量,而变量在编译时是一个父类实例,在运行时可能是一个子类实例。 13. Which are not Java primitive types? A. short B. Boolean C. unit D. float 翻译

下面哪些不是java的原始数据类型。 答案 B,C

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

byte,short,int,long,boolean,char,float,double。注意这些是大小写敏感的,而Boolean是booelan的封装类(wrapper class)。

14. Use the operators \ A. 0000 0100 0000 0000 0000 0000 0000 0000<<5 gives 1000 0000 0000 0000 0000 0000 0000 0000

B. 0000 0100 0000 0000 0000 0000 0000 0000<<5 gives

1111 1100 0000 0000 0000 0000 0000 0000

C. 1100 0000 0000 0000 0000 0000 0000 0000>>5 gives 1111 1110 0000 0000 0000 0000 0000 0000

D. 1100 0000 0000 0000 0000 0000 0000 0000>>5 gives 0000 0110 0000 0000 0000 0000 0000 0000 翻译

使用\和 \操作符的哪些陈述是对的。 答案 A,C

解析 Java的移位操作符一共有三种,分别是”>>”,”>>>”,”<<”,执行的操作分别是有符号右移,无符号右移,左移,有符号右移的意思是说移入的最高位和原最高符号位相同,无符号右移是移入位始终补零,左移时最低位始终补零,最高位被舍弃。移位操作符另一个非常值得注意的特点是其右操作数是取模运算的,意思是说对于一个int型数据而言,对它移位32位的结果是保持不变而非变成零,即:a>>32的结果是a而不是0,同理,对long型数是对右操作数取64的模,a>>64==a;还有一点需要注意的是移位操作符”>>>”只对int型和long型有效,对byte或者short的操作将导致自动类型转换,而且是带符号的。

15. Which of the following range of int is correct? A. -27 -- 27-1 B. 0 -- 232-1 C. ?215 -- 215-1 D. ?231 -- 231-1 翻译

int的取值范围是哪个。 答案 D

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

16. Which keyword should be used to enable interaction with the lock of an object? The flag allows exclusive access to that object. A. transient B. synchronized C. serialize D. static 翻译

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

解析 由于java是多线程的语言,多个线程可以”同时”访问同一数据区,而在处理某些数据时不希望其它的线程修改那些数据的值或者某些操作是不可打断的,要做到这个,可以使用synchronized关键字声明这一点。

17. Which is the return type of the method main()? A. int B. void C. boolean D. static 翻译

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

解析 在java中,程序运行的入口就是main()方法,它必须是这样的形式:public static void main(String args[])。但是严格来讲这个题目的答案还可以加上a和c,因为并没有限定是程序入口的main()方法,而main()方法是可以重载的。一般意义上的main()当然就是指我们刚开始所说的main()方法了。

18. Given the following code:

if (x>0) { System.out.println(\ else if (x>-3) { System.out.println(\ else { System.out.println(\

Which range of x value would print the string \ A. x > 0 B. x > -3 C. x <= -3 D. x <= 0 & x > -3 翻译

给出下面的代码: ?

x的取值在什么范围内时将打印字符串\。 答案 D

解析 x>0时打印\,x>-3&&x<=0时打印\,x<=-3时打印\。这个题目没有什么难的,只要理解if语句的语法就可以了。

19. Given the following expression about TextField which use a proportional pitch font.

TextField t = new TextField(\ Which statement is true?

A. The displayed string can use multiple fonts.

B. The maximum number of characters in a line will be 40.

C. The displayed width is exactly 40 characters. D. The user can edit the characters. 翻译

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

哪些叙述是对的?

A. 被显示的字符串可以使用多种字体。 B. 一行中最大的字符数是40 C. 显示的宽度正好是40个字符宽。 D. 用户可以编辑字符。 答案 D

解析 对于TextField的该种形式的构造函数来说,前一个参数是文本域中初始的字符串的显示值,而后一个是推荐的显示宽度,以列数表示,在构造文本域的时候会将这个大小设置为最佳大小,如果容器的限制使得文本域不能显示这么多也没有办法,一般来说是比这个大小大的,而且即使宽度很小,你也可以在文本域的一行中输入很长的字符串,只有你不使用回车,在超过显示宽度后文本域会自动出现水平滚动条(没有被设置为关闭,缺省是不关闭的),而文本域的缺省编辑方式是可编辑的,一个文本域只能使用一种字体,这个字体可以在运行的过程中动态的改变,但是文本域中的所有字符串都将使用这个字体显示。

20. Which statements about the garbage collection are true?

A. The program developer must create a thread to be responsible for free the memory.

B. The garbage collection will check for and free memory no longer needed. C. The garbage collection allow the program developer to explicity and immediately free the memory.

D. The garbage collection can free the memory used java object at expect time. 翻译

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

A. 程序开发者必须自己创建一个线程进行内存释放的工作。 B. 垃圾收集将检查并释放不再使用的内存。

C. 垃圾收集允许程序开发者明确指定并立即释放该内存。 D. 垃圾收集能够在期望的时间释放被java对象使用的内存。 答案 B

解析 Java语言将内存分配和释放的工组交给了自己,程序员不必做这些工作,它提供一个系统级的线程跟踪每个内存的分配,在JVM的空闲处理中,垃圾收集线程将检查和释放不再使用的内存(即可以被释放的内存)。垃圾收集的过程在java程序的生存期中是自动的,不需要分配和释放内存,也避免了内存泄漏。可以调用System.gc()方法建议(suggest)JVM执行垃圾收集以使得可被释放的内存能立即被使用,当此方法返回的时候,JVM已经做了最大的努力从被丢弃的对象上回收内存空间。程序员不能指定收集哪些内存,一般而言也不用关心这个问题,除非是程序的内存消耗很大,特别是有很多临时对象时可以“建议“进行垃圾收集以提高可用内存。需要指出的是调用System.gc()方法不能保证JVM立即进行垃圾收集,而只能是建议,因为垃圾收集线程的优先级很低(通常是最低的)。 21、Which of the following assignment is not correct? A. float f = 11.1; B. double d = 5.3E12; C. double d = 3.14159; D. double d = 3.14D. (a)

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

浮点数的赋值是带有小数点的数字缺省是double型的,如果在浮点数后面加f或者F则是float,后面加d或者D则是double,科学计数法形式的浮点数也是double型的,而double的精度比float高,将一个高精度的double赋值给一个低精度的float时需要进行强制类型转换,反之则不需要。

22、Given the uncompleted code of a class: class Person {

String name, department; int age;

public Person(String n){ name = n; }

public Person(String n, int a){ name = n; age = a; } public Person(String n, String d, int a) {

// doing the same as two arguments version of constructor // including assignment name=n,age=a department = d; } }

Which expression can be added at the \constructor? A. Person(n,a); B. this(Person(n,a)); C. this(n,a); D. this(name,age). (c)

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

?

下面的哪些表达式可以加到构造方法中的\处?

在同一个类的不同构造方法中调用该类的其它构造方法需要使用this(?)的形式,而且必须是在构造方法的第一行调用,这个和普通的方法重载调用的方式不同,普通的方法可以直接使用方法名加参数来调用,而且调用位置没有限制,因此答案A是不行的,B的语法就是错误的,D的错误在于在父类型的构造函数被调用前不能引用类的成员。构造方法是一个类对象实例化的起点(虽然严格来说首先执行的并不是构造方法的第一个语句,而是内存的分配),因此在构造方法中不能将成员作为参数引用。

23、Which of the following statements about variables and their scopes are true?

A. Instance variables are member variables of a class. B. Instance variables are declared with the static keyword.

C. Local variables defined inside a method are created when the method is executed.

D. Local variables must be initialized before they are used. (acd)

题目:下面关于变量及其范围的陈述哪些是对的。 A. 实例变量是类的成员变量。 B. 实例变量用关键字static声明。

C. 在方法中定义的局部变量在该方法被执行时创建 D. 局部变量在使用前必须被初始化。

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

local\\automatic\\temporary\\stack variable)是定义在方法里的变量;实例变量(英文为:instance variable)是在方法外而在类声明内定义的变量,有时也叫成员变量;类变量(英文为:class variable)是用关键字static声明的实例变量,他们的生存期分别是:局部变量在定义该变量的方法被调用时被创建,而在该方法退出后被撤销;实例变量在使用new Xxxx()创建该类的实例时被创建,而其生存期和该类的实例对象的生存期相同;类变量在该类被加载时被创建,不一定要用new Xxxx()创建,所有该类的实例对象共享该类变量,其

生存期是类的生存期。任何变量在使用前都必须初始化,但是需要指出的是局部变量必须显式初始化,而实例变量不必,原始类型的实例变量在该类的构造方法被调用时为它分配的缺省的值,整型是0,布尔型是false,而浮点型是0.0f,引用类型(类类型)的实例变量的缺省值是null(没有进行实际的初始化,对它的使用将引起NullPointException),类变量的规则和实例变量一样,不同的是类变量的初始化是在类被加载时。 24、public void test() { try { oneMethod();

System.out.println(\

} catch (ArrayIndexOutOfBoundsException e) { System.out.println(\ } catch(Exception e) {

System.out.println(\ } finally {

System.out.println(\ } }

Which will display if oneMethod run normally? A. condition 1 B. condition 2 C. condition 3 D. finally (ad)

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

如果try块中的语句在执行时发生异常,则执行从该处中断而进入catch块,根据异常的类型进行匹配,最前面的优先进行匹配比较,只要该异常是catch中指定的异常的子类就匹配成功进而执行相应的catch中的内容,而finally块中的内容无论是否发生异常都将被执行。

25、Given the following code: public class Test { void printValue(int m){

do { System.out.println(\ }

while( --m > 10 ) }

public static void main(String arg[]) { int i=10;

Test t= new Test(); t.printValue(i); } }

Which will be output? A. The value is 8 B. The value is 9 C. The value is 10 D. The value is 11 (c)

题目:给出下面的代码: ?

输出将是什么?

此题考察的是do? while循环和 -- 操作符的知识,do?while最少被执行一次,在执行完do中的内容后判断while中的条件是否为true,如果为true的话就再执行do中的内容,然后再进行判断,以此类推直到while的判断为false时退出循环执行循环后面的内容,而—操作符的规则是在变量右边的-- 将先进行运算,然后才是使变量的值减一,而在变量左边的是先将变量的值减一再运算

26、Which of the following statements about declaration are true?

A. Declaration of primitive types such as boolean, byte and so on does not allocate memory space for the variable.

B. Declaration of primitive types such as boolean, byte and so on allocates memory space for the variable.

C. Declaration of nonprimitive types such as String, Vector and so on does not allocate memory space for the object.

D. Declaration of nonprimitive types such as String, Vector ans so on allocates memory space for the object. (ad)

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

A. 对原始数据类型例如boolean,byte的变量的声明不会为该变量分配内存空间。 B. 对原始数据类型例如boolean,byte的变量的声明将为之分配内存空间。 C. 非原始数据类型例如String,Vector的变量的声明不会为该对象分配内存。 D. 非原始数据类型例如String,Vector的变量的声明会为该对象分配内存。 对原始数据类型的变量的声明将为之分配内存并赋予一个缺省值,参见23题的叙述,而非原始数据类型的变量必须用new Xxxx()分配内存及初始化。但是严格来讲此题的答案有待确定,因为只有原始类型的实例变量和类变量的声明在类对象被创建/类被加载时完成内存的自动分配,而原始类型的局部变量必须显式初始化,从这点来看原始类型的局部变

D. 一个线程可能因为不同的原因停止(cease)并进入就绪状态。

一个新创建的线程并不是自动的开始运行的,必须调用它的start()方法使之将线程放入可运行态(runnable state),这只是意味着该线程可为JVM的线程调度程序调度而不是意味着它可以立即运行。线程的调度是抢先式的,而不是分时间片式的。具有比当前运行线程高优先级的线程可以使当前线程停止运行而进入就绪状态,不同优先级的线程间是抢先式的,而同级线程间是轮转式的。一个线程停止运行可以是因为不同原因,可能是因为更高优先级线程的抢占,也可能是因为调用sleep()方法,而即使是因为抢先而停止也不一定就进入可运行队列的前面,因为同级线程是轮换式的,它的运行可能就是因为轮换,而它因抢占而停止后只能在轮换队列中排队而不能排在前面。

59、The method resume() is responsible for resuming which thread's execution?

A. The thread which is stopped by calling method stop() B. The thread which is stopped by calling method sleep() C. The thread which is stopped by calling method wait() D. The thread which is stopped by calling method suspend() (d)

题目:方法resume()负责恢复哪些线程的执行。 A. 通过调用stop()方法而停止的线程。 B. 通过调用sleep()方法而停止运行的线程。 C. 通过调用wait()方法而停止运行的线程。 D. 通过调用suspend()方法而停止运行的线程。

Thread的API文档中的说明是该方法恢复被挂起的(suspended)线程。该方法首先调用该线程的无参的checkAccess() 方法,这可能在当前线程上抛出SecurityException 异常,如果该线程是活着的(alive)但是被挂起(suspend),它被恢复并继续它的执行进程。 60、Given the following code: 1) public class Test {

2} int m, n; 3} public Test() {}

4} public Test(int a) { m=a; }

5} public static void main(String arg[]) { 6} Test t1,t2; 7} int j,k; 8} j=0; k=0; 9} t1=new Test(); 10} t2=new Test(j,k); 11} } 12} }

Which line would cause one error during compilation? A. line 3 B. line 5 C. line 6 D. line 10 (d)

题目:给出下面的代码: ?

在编译时哪行将导致一个错误。

第10行的声明调用一个带两个参数的Test的构造方法,而该类没有这样的构造方法。

本文来源:https://www.bwwdw.com/article/dis2.html

Top