java 基础之final、finally和finalize的区别

 更新时间:2017年05月06日 11:58:06   投稿:lqh  
这篇文章主要介绍了java 基础之final、finally和finalize的区别的相关资料,需要的朋友可以参考下

java 基础之final、finally和finalize的区别

1.final可以修饰类,不能被继承;可以修饰方法,不能被重写;可以修饰变量,只能赋值一次。

2.finally是try语句中的语句体,不能单独使用,用来释放资源;

3.finalize是一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

如下代码程序:

package cn.jit.test; 
/** 
 * 面试题1:final,finally和finalize的区别: 
 * 
 * final可以修饰类,不能被继承; 
 *   可以修饰方法,不能被重写 
 *   可以修饰变量,只能赋值一次。 
 * finally是try语句中的语句体,不能单独使用,用来释放资源; 
 * finalize是一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象 
 * 的垃圾回收器调用此方法。 
 * 
 * 
 * 面试题2:如果catch里面有return语句,请问finally的代码还会被执行吗? 
 * 如果会,请问是在return前还是在return后? 
 * 会。在return前。 
 * 
 * @author Rocky 
 * 
 */ 
public class FinallyDemo8 { 
  public static void main(String[] args) { 
    Demo d = new Demo(); 
    System.out.println(d.method()); 
  } 
} 
class Demo { 
  public int method() { 
    int x = 10; 
    try { 
      x = 20; 
      System.out.println(1/0); 
      return x; 
    } catch (Exception e) { 
      x = 30; 
      return x; 
    } finally { 
      /* 
       * finally中不应当有return语句 
       * 否则该方法一定会返回这里的内容 
       */ 
      x = 40; 
      return 40; 
      //千万不要在finally里面写返回语句,因为finally的作用是 
      //释放资源,是肯定会执行的,如果在这里面写返回语句,那么try和cache 
      //的结果都会被改变,所以这么写就是犯罪!!! 
    } 
     
  } 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Maven项目执行生命周期相关操作时出现错误:does not match a valid id pattern问题

    Maven项目执行生命周期相关操作时出现错误:does not match a 

    当pom文件中的gav标签格式错误,如出现中文或空格,会导致与有效的id模式不匹配错误,gav标签应仅包含数字、字母和下划线,解决方法是修改标签中的中文为英文,删除多余空格,并刷新pom文件,例如,将中文"测试"改为英文"test"
    2024-09-09
  • Java 程序初始化顺序

    Java 程序初始化顺序

    这篇文章主要介绍了Java 程序初始化顺序,在Java语言中,当实例化对象时,对象所在类的所有成员变量首先要进行初始化,只有当所有的类成员完成了初始化之后,才会调用对象所在类的构造函数创建对象,需要的朋友可以参考一下
    2022-01-01
  • java注解的全面分析

    java注解的全面分析

    这篇文章主要介绍了java注解的全面分析的相关资料,Java提供的一种原程序中的元素关联任何信息和任何元数据的途径和方法,需要的朋友可以参考下
    2017-08-08
  • Java原子操作CAS原理解析

    Java原子操作CAS原理解析

    这篇文章主要介绍了Java原子操作CAS原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • java堆栈跟踪工具jstack的使用教程

    java堆栈跟踪工具jstack的使用教程

    jstack(stack trace for java)是java虚拟机自带的一种堆栈跟踪工具,主要用于生成java虚拟机当前时刻的线程快照,下面我们就来学习一下它的具体使用吧
    2023-11-11
  • Java导出txt文件的方法

    Java导出txt文件的方法

    这篇文章主要介绍了Java导出txt文件的方法,实例分析了两种java导出txt文本文件的使用技巧,需要的朋友可以参考下
    2015-05-05
  • Java中map和flatMap的区别举例详解

    Java中map和flatMap的区别举例详解

    这篇文章主要给大家介绍了关于Java中map和flatMap区别的相关资料,在Java中Stream接口有map()和flatmap()方法,两者都有中间流操作,并返回另一个流作为方法输出,需要的朋友可以参考下
    2023-10-10
  • java反编译工具jd-gui-osx for mac M1芯片无法使用的问题及解决

    java反编译工具jd-gui-osx for mac M1芯片无法使用的问题及解决

    这篇文章主要介绍了java反编译工具jd-gui-osx for mac M1芯片无法使用的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Java编程中应用的GUI设计基础

    Java编程中应用的GUI设计基础

    这篇文章主要介绍了Java编程中应用的GUI设计基础,为一些Java开发CS类型应用的基础概念知识,需要的朋友可以参考下
    2015-10-10
  • java导出生成csv文件的方法

    java导出生成csv文件的方法

    这篇文章主要为大家详细介绍了java导出生成csv文件的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论