`
狂盗一枝梅
  • 浏览: 13954 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

【 史上最坑爹的Java代码系列01 】

阅读更多

学习Java有几年了,但是还是有些貌似“简单”的代码值得仔细推敲,仔细记录这些点点滴滴还是很有趣的!

1.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

public class Test1 {
	public static void main(String[] args) {
		System.out.println(test1());
	}
	public static int test1() {
		int x = 1;
		try {
			return x;
		} finally {
			System.out.println("执行finally");
			x++;
		}
	}
} 

       答案是1,不是2!

 2.下面的程序输出结果是多少(1的变形)?

public class Test1 {
	public static void main(String[] args) {
		System.out.println(test1());
	}
	public static int test1() {
		int x = 1;
		try {
			return x;
		}
		finally {
			return ++x;
		}
	}
} 

       答案是2,不是1 !

       实际上return的执行优先级高于finally的执行优先级,但是return语句执行完毕之后并不会马上结束函数,而是将结果保存到函数栈中,然后继续执行finally块中的语句,所以最终的函数返回值是2而不是1.

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics