java中try代码块中return返回值的疑惑?(try语句块和finally语句块和return一起结合使用的案例)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/czh500/article/details/88770189

java中try语句块和finally语句块和return一起结合使用的案例

直接po截图和代码

大家猜一猜,test1()函数返回值会是多少?大家可以在文章下面留言,说说test1()函数为什么返回的是6,而不是7

完整的源代码如下:

package com.test;

public class TestTryAndReturn {

	public static void main(String[] args) {
		TestTryAndReturn testTryAndReturn = new TestTryAndReturn();
		System.out.println("----------------------案例1------------------------");
		int returnResult1 = testTryAndReturn.test1();
		System.out.println("调用test1()函数,返回结果为 " + returnResult1);
		System.out.println("----------------------案例2------------------------");
		int returnResult2 = testTryAndReturn.test2();
		System.out.println("调用test2()函数,返回结果为 " + returnResult2);
		System.out.println("----------------------案例3------------------------");
		int returnResult3 = testTryAndReturn.test3();
		System.out.println("调用test3()函数,返回结果为 " + returnResult3);
		System.out.println("----------------------案例4------------------------");
		int returnResult4 = testTryAndReturn.test4();
		System.out.println("调用test4()函数,返回结果为 " + returnResult4);
	}

	public int test1() {
		int a = 6;
		try {
			System.out.println("我是try块,a = " + a);
			return a;
		} finally {
			a++;
			System.out.println("我是finally块,a = " + a);
		}
	}
	
	public int test2() {
		int b = 20;
		try {
			System.out.println("我是try块,b = " + b);
			return b;
		} finally {
			b++;
			System.out.println("我是finally块,b = " + b);
			return b;
		}
	}
	
	public int test3() {
		int c = 35;
		try {
//			c++;
			System.out.println("我是try块,c = " + c);
		} finally {
			c++;
			System.out.println("我是finally块,c = " + c);
			return c;
		}
	}
	
	public int test4() {
		int d = 88;
		try {
			System.out.println("我是try块,d = " + d);
//			return d;
		} finally {
			d++;
			System.out.println("我是finally块,d = " + d);
//			return d;
		}
		return d;//如果这里写了return,那么在try和finally中就不能写return了,否则连编译都通不过
	}
}

欢迎大家在文章下评论留言,不吝赐教!

猜你喜欢

转载自blog.csdn.net/czh500/article/details/88770189