不执行,能直接说出结果么,为啥?

HUIQQ0927 2014-01-07 03:27:10
	public static String get(){

try {
return "1";
} catch (Exception e) {
// TODO: handle exception
}finally{
System.out.println("----");
}
return "2";
}

public static void main(String[] args) {

String s = get();
System.out.println(s);
}
...全文
373 31 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
HUIQQ0927 2014-01-10
  • 打赏
  • 举报
回复
引用 28 楼 nbaallstar901025 的回复:
return 并不是直接就返回值的,它先把值压入栈中等待finally里面的语句执行完毕 再出栈把值返回 如果你的finally里面也有return 就会把原来的那个值覆盖 (个人理解 觉的是这样的)
+1
HUIQQ0927 2014-01-10
  • 打赏
  • 举报
回复
引用 24 楼 dokia123 的回复:
引用 13 楼 HUIQQ0927 的回复:
谁能解释解释 return 和 finally,到底咋回事?
这是java虚拟机说了算啊,它说finally必须得执行,那不管你在哪return,所以别纠结这种问题了,java语法就这样规定的,你能咋滴。
这不是纠结的问题,我就是想明白深入一下,当然这种问题都知道答案。但是java为什么会是这样的~需要深入考虑的啊~
HUIQQ0927 2014-01-10
  • 打赏
  • 举报
回复
引用 23 楼 u012729125 的回复:
表争论了。。LZ执行一下就知道了
fuck u ~
醉爱江南 2014-01-10
  • 打赏
  • 举报
回复
引用 23 楼 u012729125 的回复:
表争论了。。LZ执行一下就知道了
这个很强大的说!
tzp19910827 2014-01-09
  • 打赏
  • 举报
回复
引用 楼主 HUIQQ0927 的回复:
	public static String get(){
		
		try {
			return "1";
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			System.out.println("----");
		}
		return "2";
	}
	
	public static void main(String[] args) {
		
		String s = get();
		System.out.println(s);
	}
结果是 ---- 1 分析: 在try语句块中return “-1” 只是把return的值返回给main了,但是程序的执行点还没有返回到main方法里面,而是要向下执行finally语句块(无论如何,finally都是会执行的),finally语句块里的print(“----”)执行,然后程序执行回到main方法将return的值-1赋值给s,然后print(s) 所以结果是先 打印 ---- 而后打印 s=“1”
linuxca 2014-01-09
  • 打赏
  • 举报
回复
HUIQQ0927 2014-01-08
  • 打赏
  • 举报
回复
引用 15 楼 u012463264 的回复:
[quote=引用 14 楼 HUIQQ0927 的回复:] return 和 finally 他俩到底有没有 jq 啊?
JQ是借钱的意思吗[/quote]奸情。。。。。
Simeone_xu 2014-01-08
  • 打赏
  • 举报
回复
return 并不是直接就返回值的,它先把值压入栈中等待finally里面的语句执行完毕 再出栈把值返回 如果你的finally里面也有return 就会把原来的那个值覆盖 (个人理解 觉的是这样的)
limengwe 2014-01-08
  • 打赏
  • 举报
回复
引用 26 楼 OnlyOneCoder 的回复:
finally在任何情况下都会执行
执行结果应该是 输出--- 和1
limengwe 2014-01-08
  • 打赏
  • 举报
回复
finally在任何情况下都会执行
ly2366866912 2014-01-08
  • 打赏
  • 举报
回复
好神奇,学到老活到老
dokia123 2014-01-08
  • 打赏
  • 举报
回复
引用 13 楼 HUIQQ0927 的回复:
谁能解释解释 return 和 finally,到底咋回事?
这是java虚拟机说了算啊,它说finally必须得执行,那不管你在哪return,所以别纠结这种问题了,java语法就这样规定的,你能咋滴。
0o瓷 2014-01-08
  • 打赏
  • 举报
回复
表争论了。。LZ执行一下就知道了
HUIQQ0927 2014-01-08
  • 打赏
  • 举报
回复
引用 21 楼 ylovep 的回复:
楼主的不执行是什么意思? ---- 1 只是我测试执行的结果
就是想说直接解释一下return和finally原理~
ylovep 2014-01-08
  • 打赏
  • 举报
回复
楼主的不执行是什么意思? ---- 1 只是我测试执行的结果
beowulf2005 2014-01-07
  • 打赏
  • 举报
回复
引用 13 楼 HUIQQ0927 的回复:
谁能解释解释 return 和 finally,到底咋回事?
关于finally和return,你读下编译后的字节码吧,运行过程非常清楚。
别闹腰不好 2014-01-07
  • 打赏
  • 举报
回复
引用 14 楼 HUIQQ0927 的回复:
return 和 finally 他俩到底有没有 jq 啊?
JQ是借钱的意思吗
HUIQQ0927 2014-01-07
  • 打赏
  • 举报
回复
return 和 finally 他俩到底有没有 jq 啊?
HUIQQ0927 2014-01-07
  • 打赏
  • 举报
回复
谁能解释解释 return 和 finally,到底咋回事?
HUIQQ0927 2014-01-07
  • 打赏
  • 举报
回复
引用 8 楼 forgetsam 的回复:
[quote=引用 2 楼 HUIQQ0927 的回复:] [quote=引用 1 楼 Test_LD 的回复:] 没啥特别的还以为能输出2的,就一点finally肯定是要执行,即使catch抛异常
可是 都return 了啊 [/quote] return又怎样。
public static String get(){
     
    try {
        System.out.println("返回1");
        return "1";
    } catch (Exception e) {
        // TODO: handle exception
      return "-1";
    }finally{
        System.out.println("返回2");
        return "2";
    }
    
}
[/quote] 这个要怎么解释
加载更多回复(11)

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧