Java连载64-finally语法及其注意事项

一、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");
      
    }
  }

}

64.1

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);//11
    }
    /*
     * 以上代码的执行原理,
     * int i = 10;
     * trt{
     *   int temp = i;
     *   return temp;
     * }finally{
     *   i++;
     *   System.out.println("m1的i=" + i);//11
     * }
     */
  }
}

64.2
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();
        }

      }
    }
  }
}

64.3

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值