
求翻译解释一下Java代码
publicclassTest{publicstaticStringoutput="";publicstaticvoidfoo(inti){try{if(i==1){th...
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);
System.out.println(Test.output);
}
} 展开
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);
System.out.println(Test.output);
}
} 展开
4个回答
展开全部
public class Test{
public static String output=" ";
public static void foo(int i){
try{
if(i==1){
throw new Exception();//如果参数为1,抛出异常,进入到catch
}
output+="1";
}catch(Exception e){
output+="2";//如果参数为1,执行这里
return;
}finally{
output+="3";//不管怎样这里都要执行
}
output+="4";//这里是最后一个执行语句,抛出异常就不执行这里
}
public static void main(String[] args){
foo(0);//第一次调用
foo(1);//第二次调用
System.out.println(Test.output);
}
}
/*
* 现在说下执行步骤:output的值我[]括起来
* 第一次调用foo(0):(1)参数为0,所以执行output+="1",那么output现在为[ 1];
* (2)执行到output+="3",那么output现在为[ 13];
* (3)执行到output+="4";那么output现在为[ 134]
* 第二次调用foo(1):(1)执行if里面,抛出异常
* (2)进入到catch,执行output+="2",output现在为[ 1342]
* (3)进入finally,执行output+="3", output现在为[ 13423]
*/
追问
也就是说
第二次调用foo(1):执行if里面,抛出异常后直接进入catch,后面的output+="1";不会被执行,对吗?
还有,catch里的return;的作用是什么?
追答
意思是这个函数执行完毕,应该返回了。但是好像是要finally执行后返回。
展开全部
答案是: 134234 首先java代码运行后,main函数是入口, 先执行foo(0) 这句代码,
然后 try执行完,output="1",然后执行finally output="13" 接着 output="134" 然后执行foo(1),在try里面抛出异常 执行catch里面的语句 output="1342" try catch 语句中finally 肯定执行 所以output="13423"然后执行output+="4"; 所以output="134234" 最后输出
然后 try执行完,output="1",然后执行finally output="13" 接着 output="134" 然后执行foo(1),在try里面抛出异常 执行catch里面的语句 output="1342" try catch 语句中finally 肯定执行 所以output="13423"然后执行output+="4"; 所以output="134234" 最后输出
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class考试{
publicstatic字符串输出= ";”;;
public static void foo(I){
试试看。
如果(I= = 1){
把新的exception();
}
输出+ =“1”;;
} catch(异常){
输出+ =“2”;;
返回;
}最后
输出+ =“3”;;
}
输出+ =“4”;;
}
public static void main(字符串[ ] args){
Foo(0);
Foo(1);
System.out。println(测试。输出);
}
}
publicstatic字符串输出= ";”;;
public static void foo(I){
试试看。
如果(I= = 1){
把新的exception();
}
输出+ =“1”;;
} catch(异常){
输出+ =“2”;;
返回;
}最后
输出+ =“3”;;
}
输出+ =“4”;;
}
public static void main(字符串[ ] args){
Foo(0);
Foo(1);
System.out。println(测试。输出);
}
}
追问
解释一下代码的意思。。。。。。。
不是翻译,不是英译汉。。。。。。
追答
自己把代码复制到Java运行下看下结果不就明白了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
您好,提问者:
因为output 是static,共享区域,是字符串类型,不会进行算数运算。
结果输出:134234
因为output 是static,共享区域,是字符串类型,不会进行算数运算。
结果输出:134234
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询