这个结果求大神帮我解释详细点 我认为是2 可是。。。结果是1 public class Sz { public int Test(){ int x = 1; try{ return x; }finally{ ++x; } public static void main(String[] args) { System.out.println(new Sz().Test()); } }} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可是不是说fianlly 中的code一定会执行! 且会在return 前执行么? public class Sz { public static void main(String[] args) { System.out.println(new Sz().Test()); } public int Test(){ int x = 1; try{ return x; }finally{ //++x; System.out .println("======================="); } }}结果是这样... 又怎么解释?=======================1 finally是一定会执行的,但是你的那个++x,它是先把值加1,也就是说(++x)的值是2,而x的值是1没变。你可以区分下x++和++x,x++是先使x的值加1在使用x,而++x是先用后加 public class Sz extends son { public static void main(String[] args) { System.out.println(new Sz().Test()); } public int Test(){ int x = 1; //返回的是这个x try{ return x; }finally{ x+=3; System.out .println(x); } }}结果是下面=== 我知道3楼你的意思 我觉得还是一楼说的对!41 在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。 在转去之前,try中先把要返回的结果存放到不同于x的局部变量中去(我们假定为tmp),执行完finally之后,在取出tmp返回结果, 因此,即使finally中对变量x进行了改变,但是不会影响返回结果。 但如果finally中也有return的话,则返回的就是finally中的return 返回的值。结论:当finally中有return语句的时候,try中的return会被抛弃;当finally中没有return语句时,try中return的值会被临时保存且在执行finally后被返回该临时保存的值 类似于javascript中的闭包,程序到return时要返回,此时x=1,函数输出结果也是1,但finnaly要执行,程序最后的结果是x=2 上传报错java.io.FileNotFoundException 【十万火急】socket向servlet发送请求 MD!这都什么事儿 网页编码用UTF-8 请问一下,如何用hibernate取刚插入PK的值? NetBeans5和JBuilder2006中集成的tomcat 的管理员密码是多少? 请教jboss的问题 在html中输入的数据如何保留在本地机上,十万火急!!! JSP 对 EJB 应用的问题? struts2 session 一个奇怪问题请教 request对象疑问 SSH 整合 报空指针错误 求高手解决
public static void main(String[] args) {
System.out.println(new Sz().Test());
}
public int Test(){
int x = 1;
try{
return x;
}finally{
//++x;
System.out .println("=======================");
}
}
}
结果是这样... 又怎么解释?
=======================
1
public static void main(String[] args) {
System.out.println(new Sz().Test());
}
public int Test(){
int x = 1; //返回的是这个x
try{
return x;
}finally{
x+=3;
System.out .println(x);
}
}
}结果是下面=== 我知道3楼你的意思 我觉得还是一楼说的对!
4
1
但如果finally中也有return的话,则返回的就是finally中的return 返回的值。结论:当finally中有return语句的时候,try中的return会被抛弃;当finally中没有return语句时,try中return的值会被临时保存且在执行finally后被返回该临时保存的值