1、SCJP 认证套题解析作本文的目的是总结自己学习 java 的知识点,也可以方便其它人学习 java,个人的感觉是 java 确实是一个很好的编程语言,而学习好 java 必须先掌握 java 的特点,而这些特点在 scjp 的套题中可以充分的体现出来,套题考核的知识点非常的到位,必须对 java 非常了解才可以做好这些题。1、Which of the following range of short is correct? -27 - 27-1 0 - 216-1 215 - 215-1 231 - 231-1(c) 题目:下面哪些是 short 型的取值范围。 短整型的数据类型的长度是 1
2、6 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 as
3、signing 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. (d) 题目:哪些是将一个十六进制值赋值给一个 long 型变量。 十六进制数以 0x 开头,long 型数以 L(大小写均可,一般使用大写,因为小写的 l 和数字 1 不易区分)。 4、Which of the following fragments might cause er
4、rors? A. String s = “Gone with the wind“; String t = “ good “; String k = s + t; B. String s = “Gone with the wind“; String t; t = s3 + “one“; C. String s = “Gone with the wind“; String standard = s.toUpperCase(); D. String s = “home directory“; String t = s - “directory“. (b,d) 题目:下面的哪些程序片断可能导致错误。
5、A:String 类型可以直接使用+进行连接运算。 B:String 是一种 Object,而不是简单的字符数组,不能使用下标运算符取其值的某个元素,错误。 C:toUpperCase()方法是 String 对象的一个方法,作用是将字符串的内容全部转换为大写并返回转换后的结果(String 类型)。 D:String 类型不能进行减(-)运算,错误。 5、class Person private int a; public int change(int m) return m; public class Teacher extends Person public int b; public
6、static void main(String arg) Person p = new Person(); Teacher t = new Teacher(); int i; / point x Which are syntactically valid statement at/ point x? A. i = m; B. i = b; C. i = p.a; D. i = p.change(30); E. i = t.b. (d,e) 题目:在/ point x 处的哪些申明是句法上合法的。 A:m 没有被申明过,不能使用。 B:虽然 b 是类 Teacher 的 public 成员变量,
7、但是在静态方法中不能使用类中的非静态成员。 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 buttonss position in the Frame might
8、be changed? A. BorderLayout B. FlowLayout C. CardLayout D. GridLayout (b) 题目:当 Frame 的大小被改变时 Frame 中的按钮的位置可能被改变时使用的哪一个布局管理器。 A:该布局管理器将容器划分为五个部分,容器大小的改变不会影响其中的组件的位置而是影响他们的大小。 B:该布局管理器根据放入其中的组件的最合适大小调整组件的位置,根据组件放入的顺序安排,一行不能容纳时放入下一行,因此容器的大小改变可能改变组件的位置。 C:该布局管理器显示放入该容器的当前页中的组件,一次显示一个,容器大小的改变不能影响其中组件的位置。
9、 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 myV
10、ect. B. The declaration on line 2 allocates memory spacefor 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 (ade
11、) 题目:给出下面的代码片断。下面的哪些陈述为true(真)? A. 第二行的声明不会为变量 myVect 分配内存空间。 B. 第二行的声明分配一个到 Vector 对象的引用的内存空间。 C. 第二行语句创建一个 Vector 类对象。 D. 第三行语句创建一个 Vector 类对象。 E. 第三行语句为一个 Vector 类对象分配内存空间。 SL-275 中指出:要为一个新对象分配空间必须执行new Xxx()调用,new 调用执行以下的操作: 1 为新对象分配空间并将其成员初始化为 0 或者null。 2 执行类体中的初始化。(例如在类中有一个成员声明 int a=10;在第一步后
12、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 (a) 题目:下面的哪些答案可以用以表示八进制值 8。 八进制值以 0 开头,以 0x 开头的为十六进制值,八进制中不能出现数字 8,最大只有 7。 9、Which are not Java keywords? A. TRUE B. sizeof C. const D. s
13、uper E. void (ab) 题目:哪些不是 Java 关键字。 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 = op
14、erator 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 trueif the contents and type of two separate objects match. (ad) 题目:下面的哪些叙述为真。 A. equals()方法判定引用值是
15、否指向同一对象。 B. = 操作符判定两个分立的对象的内容和类型是否一致。 C. equals()方法只有在两个对象的内容一致时返回true。 D. 类 File 重写方法 equals()在两个分立的对象的内容和类型一致时返回 true。 严格来说这个问题的答案是不确定的,因为 equals()方法是可以被重载的,但是按照 java 语言的本意来说:如果没有重写(override)新类的 equals(),则该方法和 = 操作符一样在两个变量指向同一对象时返回真,但是 java 推荐的是使用 equals()方法来判断两个对象的内容是否一样,就像 String 类的 equals()方法所做
16、的那样:判定两个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 progr
17、amming language a class cannot extend a class and implement a interface together. D. In Java programming language single inheritance makes code more reliable. (ad) 题目:下面关于继承的哪些叙述是正确的。 A 在 java 中只允许单一继承。 B 在 java 中一个类只能实现一个接口。 C 在 java 中一个类不能同时继承一个类和实现一个接口。 D java 的单一继承使代码更可靠。 在 java 中一个类只能有一个直接父类,但是
18、可以实现多个接口,在继承的同时可以实现接口,之所以取消多继承的原因是多继承使得代码产生很多问题,而使用单一继承则可以使代码更可靠。 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
19、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 类,这
20、涉及到类型的自动转换(将一个子类的实例赋值给一个父类的变量是不用进行强制类型转换,反之则需要进行强制类型转换,而且被赋值的变量实际上应该是一个子类的对象),如果对 t 调用了子类中新增的方法则造成编译时错误编译将不能通过,而在运行时,运行时系统将根据 t 实际指向的类型调用对应的方法,对于本例来说,t.print(10)将调用 t 实际指向的 Teacher 类的对应方法。在 java 中,可以用一个子类的实例实例化父类的一个变量,而变量在编译时是一个父类实例,在运行时可能是一个子类实例。 13、Which are not Java primitive types? A. short B. B
21、oolean C. unit D. float (bc) 题目:下面哪些不是 java 的原始数据类型。 Java 的原始数据类型一共就八个,分别是:byte,short,int,long,boolean,char,float,double。注意这些是大小写敏感的,而 Boolean 是 booelan 的封装类(wrapper class)。 14、Use the operators “, which statements are true? A. 0000 0100 0000 0000 0000 0000 0000 00005 gives 1111 1110 0000 0000 0000
22、0000 0000 0000 D. 1100 0000 0000 0000 0000 0000 0000 00005 gives 0000 0110 0000 0000 0000 0000 0000 0000 (ac) 题目:使用“操作符的哪些陈述是对的。 Java 的移位操作符一共有三种,分别是”,”,”32 的结果是 a 而不是 0,同理,对 long 型数是对右操作数取 64 的模,a64=a;还有一点需要注意的是移位操作符”只对 int 型和 long 型有效,对 byte 或者short 的操作将导致自动类型转换,而且是带符号的。 15、Which of the following
23、range of int is correct? A. -27 - 27-1 B. 0 232-1 C. 215 - 215-1 D. 231 - 231-1 (d) 题目:int 的取值范围是哪个。 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.
24、static (b) 题目:下面的哪些关键字通常用来对对象的加锁,该标记使得对对象的访问是排他的。 由于 java 是多线程的语言,多个线程可以”同时”访问同一数据区,而在处理某些数据时不希望其它的线程修改那些数据的值或者某些操作是不可打断的,要做到这个,可以使用 synchronized 关键字声明这一点。 17、Which is the return type of the method main()? A. int B. void C. boolean D. static (b) 题目:main()方法的返回类型是什么? 在 java 中,程序运行的入口就是 main()方法,它必须是这
25、样的形式:public static void main(String args)。但是严格来讲这个题目的答案还可以加上 a 和 c,因为并没有限定是程序入口的 main()方法,而 main()方法是可以重载的。一般意义上的 main()当然就是指我们刚开始所说的main()方法了。 18、Given the following code: if (x0) System.out.println(“first“); else if (x-3) System.out.println(“second“); else System.out.println(“third“); Which range
26、of x value would print the string “second“? A. x 0 B. x -3 C. x -3 (d) 题目:给出下面的代码: x 的取值在什么范围内时将打印字符串“second“。 x0 时打印“first“,x-3 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 whil
27、e 循环和 - 操作符的知识,dowhile 最少被执行一次,在执行完 do 中的内容后判断while 中的条件是否为 true,如果为 true 的话就再执行 do中的内容,然后再进行判断,以此类推直到 while 的判断为 false 时退出循环执行循环后面的内容,而操作符的规则是在变量右边的 - 将先进行运算,然后才是使变量的值减一,而在变量左边的是先将变量的值减一再运算。 26、Which of the following statements about declaration are true? A. Declaration of primitive types such as b
28、oolean, 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 forthe object. D. De
29、claration 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 的变量的声明会为该对
30、象分配内存。 对原始数据类型的变量的声明将为之分配内存并赋予一个缺省值,参见 23 题的叙述,而非原始数据类型的变量必须用 new Xxxx()分配内存及初始化。但是严格来讲此题的答案有待确定,因为只有原始类型的实例变量和类变量的声明在类对象被创建/类被加载时完成内存的自动分配,而原始类型的局部变量必须显式初始化,从这点来看原始类型的局部变量没有被自动分配内存,SL275 中只提出了非原始数据类型的变量必须使用 new Xxxx()完成内存的分配而没有指出原始数据类型的变量是否在声明时即自动进行内存分配,而从局部变量不能在显式初始化前使用这点来看在声明时没有进行内存分配。因此答案 a 的正确性
31、还有待官方的确定。 27、In the Java API documentation which sections are included in a class document? A. The description of the class and its purpose B. A list of methods in its super class C. A list of member variable D. The class hierarchy (acd) 题目:在 Java API 文档中下面的哪些部分被包括在内 A. 类及用途的描述 B. 父类的方法的列表 C. 成员变量的列
32、表 D. 类层次 类文档的内容主要是:类层次、类及用途描述、成员变量列表、构造方法列表、成员方法列表、从类层次上继承的方法列表、成员变量的详细说明、构造方法详细说明、成员方法详细说明。 28、Given the following code: 1) public void modify() 2) int i, j, k; 3) i = 100; 4) while ( i 0 ) 5) j = i * 2; 6) System.out.println (“ The value of j is “ + j ); 7) k = k + 1; 8) i-; 9) 10) Which line migh
33、t cause an error during compilation? A. line 4 B. line 6 C. line 7 D. line 8 (c) 题目:给出下面的代码: 哪些行在编译时可能产生错误。 这个问题在前面有关变量的类型及其作用域的问题中讨论过,局部变量在使用前必须显式初始化,而代码中的变量k 在使用前没有。 29、Which of the following statements about variables and scope are true? A. Local variables defined inside a method are destroyed wh
34、en the method is exited. B. Local variables are also called automatic variables. C. Variables defined outside a method are created when the object is constructed. D. A method parameter variable continues to exist for as long as the object is needed in which the method is defined. (abc) 题目:下面有关变量及其作用域的陈述哪些是对的。 A. 在方法里面定义的局部变量在方法退出的时候被撤销。 B. 局部变量也叫自动变量。