一、finally语句块

1.注意点:

(1)finally语句块可以直接和try语句块联合使用。try...finally....

(2)try.....catch.....finally也可以执行;

(3)在finally语句块中的代码是一定会执行的。

package com.bjpowernode.java_learning;

import java.io.*;

​

public class D64_1_ {

  public static void main(String[] args) throws FileNotFoundException{

    try {

      System.out.println("ABC");

    }finally {

      System.out.println("jdfoaij");

    }

    try {

//      System.exit(0);//这句话代表退出Java虚拟机

      FileInputStream f1 = new FileInputStream("jfdioa");

      //下面这个语句不会执行

      System.out.println("ABC");

    }finally {

      //无论try里面的语句是否报错,下面的语句都会执行

      System.out.println("jfaio");

    }

  }

​

}

2.深入finally语句块


public class D64_1_ {

  public static void main(String[] args) throws FileNotFoundException{

    int i = m1();

    System.out.println(i);

  }

  public static int m1() {

    int i = 10;

    try {

      return i;

    }finally {

      i++;

      System.out.println("m1的i=" + i);//

    }

    /*

     * 以上代码的执行原理,

     * int i = 10;

     * trt{

     *   int temp = i;

     *   return temp;

     * }finally{

     *   i++;

     *   System.out.println("m1的i=" + i);//11

     * }

     */

  }

}

3.fianlly语句块是一定会执行的,所以通常在程序中,为了保证某个资源一定会被释放,所以一般会在finally语句块中中释放资源。

package com.bjpowernode.java_learning;

import java.io.*;

​

public class D64_1_ {

  public static void main(String[] args) throws FileNotFoundException{

    FileInputStream f2 = null;

    try {

      f2 = new FileInputStream("jfoda");

    }catch(FileNotFoundException e){

      e.printStackTrace();

    }finally {

      if(f2 != null) {

        try {

          f2.close();

        }catch(IOException e) {

          e.printStackTrace();

        }

​

      }

    }

  }

}

二、final、finalize和finally之间的区别

final是一个Java关键字,用它来修饰的变量,不可以重复在被赋值;用它来修饰的成员函数,不可以重新被覆盖。

finalize()是Object中的方法,在垃圾回收之前会自动调用这个方法​。

finally是异常处理机制的一个语法结构。

三者其实没有什么联系,是不相同的​语法。

三、源码:

D64_1_FinallySentenceBlock.java​

https://github.com/ruigege66/Java/blob/master/D64_1_FinallySentenceBlock.java

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

最新文章

  1. 在win7环境下批量修改文件权限
  2. matlab进阶:常用功能的实现,常用函数的说明
  3. 安装mysql 5.7+版本缺少data文件夹
  4. 【Linux】netdata监控组件
  5. Android --固定底部
  6. iOS之定位与地图
  7. cocos2dx --- button点击放大中心
  8. 在win10环境下安装eclipse mars版本
  9. Centos7 ftp环境搭建
  10. 调用接口http封装
  11. 原生Ajax XMLHttpRequest对象
  12. Windows 10安装Docker 步骤及顺序
  13. MVC使用记录
  14. 目标检测(三)Fast R-CNN
  15. windows10 更新后要输入2次密码才能进入系统
  16. MySQL体系结构之物理文件
  17. Qt动态布局
  18. 装饰者模式——Head First
  19. SE Springer小组《Spring音乐播放器》软件需求说明之四
  20. 揭秘uc浏览器三

热门文章

  1. selenium--find_element_by_xpath()方法汇总
  2. C 库函数 - fmod()
  3. ps导出svg
  4. Vuejs+elementUI项目,在进行打包时,要注意的问题
  5. 数据预处理 | 使用 OneHotEncoder 及 get_dummuies 将分类型数据转变成哑变量矩阵
  6. Js Jquery 时间控件显示小时 分钟 秒
  7. 【Python】time库
  8. K3/Cloud点击按钮打开第三方URL
  9. java课后作业3
  10. [一本通学习笔记] 最近公共祖先LCA