首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 认证考试 > JAVA认证 >

SCJP认证试题解析之三

2008-10-05 
11. which statements about inheritance are true?    a. in Java programming langua ...

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 "<<", ">>", which statements are true?
   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位的。参看第一题的论述