一、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.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载64-finally语法及其注意事项的更多相关文章

  1. installshield 32位打包和64位打包的注意事项

    原文:installshield 32位打包和64位打包的注意事项 32/64位问题要把握几点:1. 明确你的产品是否需要区分32/64位2. 明确你的产品中是否有32/64位的服务注册3. 了解In ...

  2. 在linux下用tomcat部署java web项目的过程与注意事项

    在linux下用tomcat部署java web项目的过程与注意事项 一.安装JDK 到http://www.oracle.com/technetwork/java/javase/downloads/ ...

  3. Java基础之基础语法

    前言:Java内功心法之基础语法,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 一个Java程序可以认为是一系列对象的集合,而这些对象通过调 ...

  4. java与c#的语法对比

    1,命名空间与包 C#为了把实现相似功能的类组织在一起,引入了命名空间的概念(namespace) Java中与此对应的东西叫做包(package) 2,类的访问控制方面的不同 C#只有两种:publ ...

  5. Java的12个语法糖【转】

    本文转载自公众号  Hollis 原创: 会反编译的 Hollis 侵权删 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学 ...

  6. 在linux下用tomcat部署java web项目的过程与注意事项(转)

    在linux下用tomcat部署java web项目的过程与注意事项一.安装JDK到http://www.oracle.com/technetwork/java/javase/downloads/in ...

  7. Java BigDecimal类的使用和注意事项

    1.对于金额相关运算,若是精度较高,基本上用BigDecimal进行运算,精度要求低的话用Long.Double即可 2.web后台接受金额用String接受,展示到前端一般也转成 String 3. ...

  8. Java连载62-使用throws关键字处理异常

    ​一.处理异常的两种方式 1.所有的编译时异常,要求程序员在编写程序阶段,必须对它进行处理,如果不处理的话,编译就会无法通过,处理异常有两种方法:捕捉和声明抛出. 2.捕捉:try.....catch ...

  9. Java同C#的语法不同之处

    Java同C#的语法不同之处... [注:转载而来但原出处不详:若是您原创请联系我]1,命名空间与包 C#为了把实现相似功能的类组织在一起,引入了命名空间的概念(namespace) Java中与此对 ...

  10. Java中的标签语法(类似于C语言goto循环体)

    Java中的标签语法(少用) 101到150的质数 此法类似于C语言中的GOTO循环 public static void main(String[] args) { int count=0; //标 ...

随机推荐

  1. 【Python可视化】超详细Pyecharts 1.x教程,让你的图表动起来~

    前言 pyecharts 是一个用于生成 Echarts 图表的Python库.Echarts是百度开源的一个数据可视化 JS 库,可以生成一些非常酷炫的图表. Pyecharts在1.x版本之后迎来 ...

  2. Python之路Day09

    函数 将某个功能封装到一个空间中就是一个函数 减少重复代码 函数体中存放的时代码 定义函数 def len(): def 关键字 len 函数名 -- 变量名 ()格式规定 :语句结束 调用函数 函数 ...

  3. navicat 连接报2059错误

    原因 navicat不支持mysql新版本的加密规则,mysql8 之前的版本中加密规则是mysql_native_password, mysql8之后,加密规则是caching_sha2_passw ...

  4. Linux系统编程、网络编程-文件I/O

    第一章:文件io 1. 文件io讲些什么 文件io这一章讲的是,如何调用Linux OS所提供的相关的OS API,实现文件的读写. 1.1 如何理解“文件IO”这个词 IO就是input outpu ...

  5. start.sh在linux下启动报错 Can't connect to any repository: ,cannot open git-receive-pack

    个人博客 地址:http://www.wenhaofan.com/article/20181223135418 报错信息 Can't connect to any repository: ,canno ...

  6. JS Data 时间对象

    new Date() 返回当前的本地日期和时间

  7. EF模型+MySql问题

    1.添加ADO.NET模型不出现MYSQL连接时: a.确认mysql-for-visualstudio-1.2.7.msi是否安装 b.确认.net版本是否为4.6 2.已经选定了连接,但是在下一步 ...

  8. 一点点学习PS--实战七

    本节实战的内容,熟练之前几个实战中的操作: 如反复使用图层调整层中曝光度,色彩平衡,调节图片的色调:反复使用图层样式中的颜色叠加--高斯模糊--添加图层蒙版--渐变工具--不透明度来画影子. 打组(C ...

  9. Linux - Shell - 算数表达式 - 关系运算

    概述 shell 中基于 $(()) 的 关系运算 背景 复习 shell 脚本 凑数吧 准备 环境 os centos7 1. 位运算 代码 #!/bin/bash # 关系运算符 # 结果是 真/ ...

  10. soundtouch change pitch matlab implementation

    function output = changePitch(input, pitchInSemitones) % one octave is 12 semitones octave = pitchIn ...