模拟试题:SCJP035经典104题分析笔记(二)

来源:java认证发布时间:2012-11-12 12:47:12java认证视频

5.
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

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答