SUN认证Java2程序员考试(SCJP) 试题解析(1)

        前言  

  无论你是个新手,还是程序设计方面的专家,你都会惊异于sun公司java的无穷魅力。java带给你的并不仅仅是面向对象、开放、平台无关、易用、安全和“write once, run anywhere”等软件开发方面的优势,更重要的一点是,它提供了一种新颖的表达思想的方式,一种全新的思维模式。随着待解决问题的规模不断膨胀,java彻底的面向对象思想的灵活性就会凸现出来。毋庸置疑,java是你开发大型软件时最得心应手的利器或是你转行it的入门首选。  

scjp考试简介  

● 考试方式  
全英文试题,以电脑作答,在授权的prometric考试中心参加考试  
考试编号:310-025  
先决条件:无  
考试题型:复选、填空和拖拽匹配  
题量:59  
及格标准:61%  
时限:120分钟  
费用:1250元  
● 要求具备的能力  
● 使用java编程语言创建java应用程序和applets。  
● 定义和描述垃圾搜集,安全性和java虚拟机(jvm)。  
● 描述和使用java语言面向对象的特点。  
● 开发图形用户界面(gui)。利用java支持的多种布局管理。  
● 描述和使用java的事件处理模式。  
● 使用java语言的鼠标输入、文本、窗口和菜单窗口部件。  
● 使用java的例外处理来控制程序执行和定义用户自己的例外事件。  
● 使用java语言先进的面向对象特点, 包括方法重载、方法覆盖、抽象类、接口、final、static和访问控制。  
● 实现文件的输入/输出 (i/o)。  
● 使用java语言内在的线程模式来控制多线程。  
● 使用java 的sockets机制进行网络通信。  

例题1:  
choose the three valid identifiers from those listed below.  
a. idolikethelongnameclass  
b. $byte  
c. const  
d. _ok  
e. 3_case  
解答:a, b, d  
  点评:java中的标示符必须是字母、美元符($)或下划线(_)开头。关键字与保留字不能作为标示符。选项c中的const是java的保留字,所以不能作标示符。选项e中的3_case以数字开头,违反了java的规则。  

例题2:  
how can you force garbage collection of an object?  
a. garbage collection cannot be forced  
b. call system.gc().  
c. call system.gc(), passing in a reference to the object to be garbage collected.  
d. call runtime.gc().  
e. set all references to the object to new values(null, for example).  
解答:a  
  点评:在java中垃圾收集是不能被强迫立即执行的。调用system.gc()或runtime.gc()静态方法不能保证垃圾收集器的立即执行,因为,也许存在着更高优先级的线程。所以选项b、d不正确。选项c的错误在于,system.gc()方法是不接受参数的。选项e中的方法可以使对象在下次垃圾收集器运行时被收集。  

例题3:  
consider the following class:  
1. class test(int i) {  
2. void test(int i) {  
3. system.out.println(“i am an int.”);  
4. }  
5. void test(string s) {  
6. system.out.println(“i am a string.”);  
7. }  
8.  
9. public static void main(string args[]) {  
10. test t=new test();  
11. char ch=“y”;  
12. t.test(ch);  
13. }  
14. }  
which of the statements below is true?(choose one.)  
a. line 5 will not compile, because void methods cannot be overridden.  
b. line 12 will not compile, because there is no version of test() that rakes a char argument.  
c. the code will compile but will throw an exception at line 12.  
d. the code will compile and produce the following output: i am an int.  
e. the code will compile and produce the following output: i am a string.  
解答:d  
  点评:在第12行,16位长的char型变量ch在编译时会自动转化为一个32位长的int型,并在运行时传给void test(int i)方法。