Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >finally关键字的特点及其面试题

finally关键字的特点及其面试题

作者头像
黑泽君
发布于 2018-10-11 06:39:19
发布于 2018-10-11 06:39:19
57502
代码可运行
举报
文章被收录于专栏:黑泽君的专栏黑泽君的专栏
运行总次数:2
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
finally关键字的特点及其面试题
        A:finally用于释放资源,它的代码永远会执行。
            特殊情况:如果在执行到finally之前jvm退出了,比如System.exit(0),则就不能执行了finally控制的语句体了。
        B:面试题
            a:final,finally,finalize的区别?
                final:最终的意思,可以修饰类、成员变量、成员方法
                    修饰类,类不能被继承。
                    修饰变量,变量是常量。
                    修饰方法,方法不能被重写。
                finally:是异常处理的一部分,用于释放资源。
                    一般来说,代码肯定会执行,特殊情况:如果在执行到finally之前jvm退出了,比如System.exit(0),则就不能执行了finally控制的语句体了。
                finalize:是Object类的一个方法,用于垃圾回收。
            b:如果catch里面有return语句,请问finally里面的代码还会执行吗?
                如果会,请问是在return前,还是return后。
                会。前。(相对于最后一个能执行到的return语句来说)
                准确的说,应该是在中间。
        C:try...catch...finally...的格式变形
            a:try...catch...finally...
            b:try...catch
            c:try...catch...catch...
            d:try...catch...catch...catch...finally...
            e:try...finally...
                这种做法的目前是为了释放资源但是异常没有处理。

示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 package cn.itcast_07;
 2 
 3 import java.text.ParseException;
 4 import java.text.SimpleDateFormat;
 5 import java.util.Date;
 6 
 7 /*
 8  * finally:被finally控制的语句体一定会执行。
 9  *         注意:如果在执行到finally之前jvm退出了,比如System.exit(0),则就不能执行了finally控制的语句体了。
10  * 
11  * A:格式
12  *         try...catch...finally...
13  * B:用于释放资源,在IO流操作和数据库操作中会见到。
14  */
15 public class FinallyDemo {
16     public static void main(String[] args) {
17         String s = "2014-11-20";
18         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
19 
20         Date d = null; // 局部变量,引用数据类型,需要初始化为null。为什么呢?按理说 d = sdf.parse(s); 这一句就可以初始化了啊?
21         try {
22             d = sdf.parse(s); // 编译期异常,因为编译的时候,我不知道try里面有什么语句(编译只检查语法),只有运行的时候才知道try里面有什么,如果这句前面有一句抛出异常,则就不会执行到这一句了。d就不能初始化了。    
23         } catch (ParseException e) {
24             e.printStackTrace();
25             System.exit(0);
26         } finally {
27             System.out.println("这里的代码是可以执行的");
28         }
29 
30         System.out.println(d);
31     }
32 }
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 package cn.itcast_07;
 2 
 3 /*
 4  * 面试题:
 5  * 1:final,finally和finalize的区别
 6  *         final:最终的意思,可以修饰类、成员变量、成员方法
 7  *             修饰类,类不能被继承。
 8  *             修饰变量,变量是常量。
 9  *             修饰方法,方法不能被重写。
10  *         finally:是异常处理的一部分,用于释放资源。
11  *             一般来说,代码肯定会执行,特殊情况:如果在执行到finally之前jvm退出了,比如System.exit(0),则就不能执行了finally控制的语句体了。
12  *         finalize:是Object类的一个方法,用于垃圾回收。
13  * 
14  * 2:如果catch里面有return语句,请问finally里面的代码还会执行吗?
15  *       如果会,请问是在return前,还是return后。
16  *            会。前。(相对于最后一个能执行到的return语句来说)
17  *         准确的说,应该是在中间。
18  * 
19  * 3:try...catch...finally...的格式变形
20  *         A:try...catch...finally...
21  *         B:try...catch
22  *         C:try...catch...catch...
23  *         D:try...catch...catch...catch...finally...
24  *         E:try...finally...
25  *             这种做法的目前是为了释放资源但是异常没有处理。
26  */
27 public class FinallyDemo2 {
28     public static void main(String[] args) {
29         System.out.println(getInt());
30     }
31 
32     public static int getInt() {
33         int a = 10;
34         try {
35             System.out.println(a / 0);
36             a = 20;
37         } catch (ArithmeticException e) {
38             a = 30;
39             return a;
40             /*
41              * return a; 在程序执行到这一步的时候,这里不是return a; 而是return 30; 这个返回路径就形成了。
42              * 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
43              * 再次回到以前的返回路径,继续走 return 30;
44              */
45         } finally {
46             a = 40;
47             // return a; // 如果这样结果就是40了。
48         }
49         
50         return a;
51     }
52 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java基础19(01)总结IO流,异常try…catch,throws,File类
1:异常(理解) (1)程序出现的不正常的情况。 (2)异常的体系 Throwable |--Error 严重问题,我们不处理。 |--Exception |--RuntimeException 运行期异常,我们需要修正代码 |--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过 package cn.itcast_01; /* * 异常:程序出现了不正常的情况。 * * 举例:今天天气很好,班长出去旅游。骑着自行车,去山里面呼吸新鲜空气。 * 问题1
Java帮帮
2018/03/16
9390
Java transient关键字使用小记
【本文目录】 1 异常 1.1 异常概述 1.2 try...catch...finally 捕获异常 1.3 异常的方法 1.4 throws 抛出异常 1.5 finally关键字 1.6 自定义异常 2 File类 2.1 File类概述 2.2 File类功能 2.3 File类案例 3 递归 3.1 递归概述 3.2 递归案例-阶乘 3.3 递归案例-斐波那契数列 3.4 递归案例-扫描文件 ---- 1 异常 1.1 异常概述 异常就是Java程序在运行过程中出现的错误。 程序的异常
Java学习123
2018/06/07
1.9K0
java基础学习_IO流01_异常、File类_day19总结
 java基础学习_IO流01_异常、File类_day19总结 ============================================================================= ============================================================================= 涉及到的知识点有:   1:异常(理解) (0)讲解IO流之前为什么先讲解异常和File类呢? (1)
黑泽君
2018/10/11
4360
Java之异常处理
Java异常处理 异常:异常就是Java程序在运行过程中出现的错误。 异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象。其实就是Java对不正常情况进行描
二十三年蝉
2018/03/01
8330
Java之异常处理
java异常处理
欢迎与我分享你的看法。 转载请注明出处:http://taowusheng.cn/ 微博:寒枫–0-0– 知乎:https://www.zhihu.com/people/tao-wu-sheng 豆瓣:YIFEI
yifei_
2022/11/14
3650
面试官:小伙子来说一说Java中final关键字,以及它和finally、finalize()有什么区别?
面试官:“小伙子,用过final关键字吗?” 我:“必须用过呀” 面试官:“好,那来说一说你对这个关键字的理解吧,再说一说它与finally、finalize()的区别” 我:“好嘞!”
JavaBuild
2024/05/27
1400
面试官:小伙子来说一说Java中final关键字,以及它和finally、finalize()有什么区别?
《面试季》经典面试题-异常篇(一)
  异常机制是指当程序出现错误时,该如何处理,它给程序提供了一个安全的退出通道,就跟我们大楼的安全通道类似,当出现火灾或者不可控的情况时,人们可以通过安全通道逃生。
IT学习日记
2022/09/13
3840
《面试季》经典面试题-异常篇(一)
看完这篇 final、finally 和 finalize 和面试官扯皮就没问题了
final 是 Java 中的关键字,它也是 Java 中很重要的一个关键字,final 修饰的类、方法、变量有不同的含义;finally 也是一个关键字,不过我们可以使用 finally 和其他关键字结合做一些组合操作;finalize 是一个不让人待见的方法,它是对象祖宗 Object 中的一个方法,finalize 机制现在已经不推荐使用了。本篇文章,cxuan 就带你从这三个关键字入手,带你从用法、应用、原理的角度带你深入浅出理解这三个关键字。
cxuan
2020/11/03
3640
看完这篇 final、finally 和 finalize 和面试官扯皮就没问题了
吊打面试官系列:final、finally、finalize 有什么区别?
String 、Integer、Long等类都是final修饰的类。其保存值的属性也是final修饰的。
田维常
2020/12/14
3830
【面试题精讲】finally 中的代码一定会执行吗?
在Java编程中,try-catch-finally是一种常见的异常处理机制。finally块用于编写无论是否发生异常都必须执行的代码。然而,在一些情况下,finally中的代码并不一定会执行,这可能会在面试中成为一个常见的问题。本文将深入探讨finally中代码的执行情况,并提供一些示例以帮助你更好地理解。
IT_陈寒
2023/12/13
2200
【面试题精讲】finally 中的代码一定会执行吗?
Java异常处理扫盲贴
Throwable类是Java语言所有错误或异常的超类(两个直接子类:Error和Exception)
全菜工程师小辉
2019/08/16
5630
Java异常处理扫盲贴
Java 最常见的 208 道面试题:第七模块答案
throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。
Java团长
2019/04/25
7080
【面试精讲】Java:final、finally 和 finalize 有什么区别?
Java 语言有很多看起来很相似,但是用途却完全不同的语言要素,谈谈 final、finally、 finalize 有什么不同?
sidiot
2023/08/31
2310
Java面试之关键字
finalize()是Object的protected方法,子类可以覆盖该方法来实现资源清理工作,GC在回收对象之前调用该方法。
黄桂期
2018/07/19
7360
Java面试之关键字
Java基础笔记19
19.01_异常(异常的概述和分类) A:异常的概述 异常就是Java程序在运行过程中出现的错误。 B:异常的分类 通过API查看Throwable Error 服务器宕机,数据库崩溃等 Exception C:异常的继承体系 Throwable Error Exception RuntimeException 19.02_异常(JVM默认是如何处理异常的) A:JVM默认是如何处理异常的 main函数收到这个问题时,有两种处理方式: a:自己将该问题处理,然后继续运行 b:自己没有针对的处理
dreamkong
2018/06/21
6560
java 面试题 final、finally、finalize 有什么区别?
在Java中,final、finally和finalize是三个不同的关键字,具有不同的含义和用法。
高老师
2023/07/13
4180
冒死潜入某个外包公司获得的珍贵Java基础笔试题(附答案)
8、HttpServletRequest对象的( )方法能够获取一个表单参数的值:
Maynor
2021/12/07
9431
冒死潜入某个外包公司获得的珍贵Java基础笔试题(附答案)
Java 后台开发面试题分享六
(1)管理方式不同。栈由操作系统自动分配释放,无需手动控制;堆的申请和释放工作由程序员控制,容易产生内存泄漏。
RendaZhang
2020/11/04
5260
final 、finally、finalize有什么区别
finall 是Java中保证代码一定要被执行的一种机制,我们可以使用 try-finally 或者 try-catch-finally 来进行类似关闭JDBC,unlock 锁等动作。
王小明_HIT
2019/11/04
8760
java除零异常_JAVA异常处理
首先明确一下什么是异常,代码正常运行不会出问题,但是遇到意外,参数变量,不符合要求,发生意外,代码终止运行,就是异常。
全栈程序员站长
2022/08/30
2.6K0
相关推荐
Java基础19(01)总结IO流,异常try…catch,throws,File类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档