sun认证java程序员考试试题

发布时间:2017-03-31 00:00:00 编辑:小静 手机版

  SUN认证是给网络设计界建立的一套认证标准,Sun公司推出了Java以及Solaris技术认证方案。下面是小编整理的关于sun认证java程序员考试试题,欢迎大家参考!

  1.

  public class test{

  public static string output='';

  public static void foo(int i){

  try {

  if(i==1){

  throw new exception();

  }

  output +='1';

  }

  catch(exception e){

  output+='2';

  return;

  }

  finally{

  output+='3';

  }

  output+='4';

  }

  public static void main(string args[]){

  foo(0);

  foo(1);

  24)

  }

  }

  what is the value of output at line 24?

  题意: 在第24行处,output的值是什么。

  分析: 本题考察static类型的变量和try—catch语句的执行。try—catch语句参见第4题的讲解。所谓静态,据本人理解指的是其在内存中的位置是固定的,即程序装载完成后所有静态变量就固定于某一内存地址中,它们不随着类的实例化而随对象的地址而变动,所以有人说静态变量属于类而不属于对象。所以静态方法可以不对类进行实例化而直接调用,静态变量也可以不对其所属类进行实例化而直接使用。而多次实例化的对象使用静态变量时,实际是使用同一内存地址的内容。

  解答: 从主程序的调用入手分析。1、foo(0)调用foo函数,并将0传给foo函数的i变量。2、运行try语句块,比较i==1不成立,执行if后面的语句output +='1',此时output的值为“1”。3、try语句没有异常抛出,在执行finally语句后即结束。finally语句改变output的值为“13”。4、执行try语句外面的语句output+='4',此时output的值为“134”,foo(0)调用结束。5、foo(1)调用foo函数并将1传给foo函数的i变量。6、运行try语句块,比较i==1成立,执行if语句块内的语句。7、抛出一个异常。8、catch语句立刻捕获异常并执行output+='2',此时output的值为“1342”。9、继续向下执行return准备结束foo函数,但是return前要执行finally语句的内容output+='3',此时output的值为“13423”。然后结束foo函数。在第24行处output的值为“13423”。

  注意: 答案时应该写“”?

  示例: w05.java

  a. i=6 j=5

  b. i=5 j=5

  c. i=6 j=4

  d. i=5 j=6

  e. i=6 j=6

  题意: 执行结束后,i和j的值分别是什么?

  分析: 说实话,我开始以为这题还有点复杂,是考x++和++x的区别以及continue语句的作用,可是经过分析发现其实知不知道以上两个知识点对答案并没有影响,简单的计算一下就ok了,i和的值经过循环依次为:2、9;3、8;4、7;5、6。此时i<5不成立,程序结束,而已。

  解答: i=5,j=6 。答案为d

  注意: 还是要注意一下x++和++x的区别,x++表达式的值为x原值,++x表达式的值为x经+1计算后的值。但经过x++或++x后x本身的值都比原值增加了1。例如:int a=1,b=1; int c=a++;int d=++b;最后a为2,b为2,c为1,d为2。还有就是continue用于循环块内表示本次循环结束(注意不是循环结束!)下次循环开始,它后面的语句就不执行了。

  示例: w08.java

  2.

  1)public class x{

  2) public object m(){

  3) object o=new float(3.14f);

  4) object[] oa=new object[1];

  5) oa[0]=o;

  6) o=null;

  7) oa[0]=null;

  system.out.println(oa[0]);

  9) }

  10) }

  which line is the earliest point the object a refered is definitely elibile to be garbage collectioned?

  a.after line 4

  b.after line 5

  c.after line 6

  d.after line 7

  e.after line 9(that is,as the method returns)

  题意: (此题有拼写错误大概意思是)哪一行是引用对象明确的允许被垃圾收集机收集的最早的位置

  分析: 一个对象成为垃圾有两种情况,一是失去引用;一是离开了作用域。

  解答: 程序在第3行new了一个值为3.14的float对象,并用object引用类型o指向它。第4行声明一个大小为1的object类型的数组oa,第5行将o的引用传递给oa的第一个成员oa[0]。注意此时有两个引用o和oa[0]指向实际值为3.14的float对象。第6行让o为空,既o失去对象的引用,也就是float对象失去一个引用o。此时float对象还有一个引用oa[0],用oa[0]依然可以访问。第7行,oa[0]置空,此时float对象已经没有引用指向它,既变为垃圾,可以被收集。所以答案是d。

  注意: 注意对象和对象的引用的区别。

  示例: 无

本文已影响863
+1
0