finally关键字的特点及作用
package fun_07;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* finally关键字的特点及作用
*
* finally:被finally控制的语句一定会执行
* 注意:如果在执行到finally之前jvm退出了,就不能执行了。
*
* 格式:try...catch...finally..
* 作用:用于释放资源,在IO流操和数据库操作中会见到。
*/
public class FinallyDemo {
public static void main(String[] args) {
String s = "2018-8-6";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
// System.out.println(10/0);
date = sdf.parse(s);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(0);
} finally {
System.out.println("这里的代码是可以执行的");
}
System.out.println(date);
}
}
面试题之final,finally和finalize的区别
面试题之final,finally和finalize的区别
面试题:在面试时,如果有不知道的可以向面试官虚心请教
1:final、finally和finalize的区别
final:
最终的意思,可以修饰类,修饰成员变量,修饰成员方法
修饰类,类不能被继承
修饰变量,变量是常量
修饰方法,方法不能被重写
finally:
是异常处理的一部分,用于释放资源。
一般来说,代码肯定会执行,特殊情况:在执行到finally之前jvm退出了
finalize:
是Object类的一个方法,用于垃圾回收
面试题之如果在finally之前有return
package fun_07;
/*
* 面试题之如果在finally之前有return
*
* 2:如果catch里面有return语句,请问finally里面的代码还会执行吗?
* 如果会,请问题在return前还是在return后。
* 会。前
*
* 准确的说,应该是在中间。
*/
public class Finally2Demo {
public static void main(String[] args) {
System.out.println(getInt());// 30
}
public static int getInt() {
int a = 10;
try {
System.out.println(a / 0);
a = 20;
} catch (ArithmeticException e) {
a = 30;
return a;
/*
* return a在程序执行到这一步的时候,这里不是return a而是return 30;这个返回路径就形成了。
* 但是呢,它发现后面还有finally,所以继续执行finally内容,a=40 再次回到以前的返回路径,继续走return 30;
*/
} finally {
a = 40;
return a;// 如果这样结果就是40了。
}
// return a;
}
}
try...catch...finally...的格式变形
try...catch...finally...
try...catch...
try...catch...catch...
try...catch...catch...finally...
try...finally... 这种方法是为了释放资源