一、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. STL中_Rb_tree的探索

    我们知道STL中我们常用的set与multiset和map与multimap都是基于红黑树.本文介绍了它们的在STL中的底层数据结构_Rb_tree的直接用法与部分函数.难点主要是_Rb_tree的各 ...

  2. java读取解析application.yml

    java读取解析application.yml 不用依赖spring容器,可单独使用. bug已修改... 第一步.首先要2个jar <!-- properties和yaml格式化 --> ...

  3. 归并排序 ALDS1_5_B:Merge Sort

    Merge Sort Write a program of a Merge Sort algorithm implemented by the following pseudocode. You sh ...

  4. If no other git process is currently running, this probably means a git proc

    原因:用SourceTree提交代码,发现这个问题.好像是因为上个进程没停止,造成文件不识别 解决:把仓库目录里的.git/index.lock文件(文件是隐藏的)删除就可以了.删除index.loc ...

  5. 机器学习作业(二)逻辑回归——Matlab实现

    题目太长啦!文档下载[传送门] 第1题 简述:实现逻辑回归. 第1步:加载数据文件: data = load('ex2data1.txt'); X = data(:, [1, 2]); y = dat ...

  6. Linux环境下C语言线程创建---简单代码

    在Linux环境下用C语言编写线程创建. //file name: pthreadtext.c #include <stdio.h> #include <pthread.h> ...

  7. Test Blog

    计算机实习报告 姓名:王方正 学号:20174314 一.开发任务 题目源自<程序设计实践教程>教材22题,学生基本信息管理.描述略. 二.需求分析 1.说明自己针对这个任务将完成哪些功能 ...

  8. 2018护网杯easy_tornado(SSTI tornado render模板注入)

    考点:SSTI注入 原理: tornado render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且 ...

  9. AntDesign(React)学习-15 组件定义、connect、interface

    虽然常用的编码用一种即可,但是看别人文档或者示例时,有的写法不熟悉的话看着很不习惯,整理几种实现同一功能的不同写法 1.Dva Connect与@Connect import React, { Pro ...

  10. Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099

    方法:把catalina.bat 文件中set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m这行去掉,具体看下面两篇博客 https://blo ...