说一下final和finally以及finalize区别?

在面试中如果问到这个问题,我们应该咋么回答呢?我就写一下我的看法如有错误还请个位指正!

文章目录

  • 说一下final和finally以及finalize区别?
  • final修饰符
  • finally代码块中
  • finalize一个方法

final修饰符

可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值;

小结:

  1. final修饰的成员变量,必须在声明的同时赋值,一旦创建不可修改(常量);
  2. final修饰的方法,不能被子类重写;
  3. final类中的方法默认是final的,该类不能被继承;
  4. private类型的方法默认是final的;

finally代码块中

一般作用在try-catch代码块中,在处理异常时通常将一定要执行的代码方法放在finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。

注:有些情况不会执行finally

  • 只有与finally对应的try语句块得到执行的情况下,finally语句块才会执行。如果在执行try语句块之前已经返回或抛出异常,那么try对应的finally语句并没有执行;
  • 我们在try语句块中执行了System.exit (0) 语句,终止了Java虚拟机的运行;
  • 如果在try-catch-finally语句中执行return语句,finally语句在该代码中一定会执行,因为finally用法特殊会撤销之前的return语句,继续执行最后的finally块中的代码;

finalize一个方法

属于所有类的父类Object类的一个方法,也就是说每一个对象都有这么个方法;Java中允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作;调用super.finalize();

  • 这个方法在GC启动该对象被回收的时候被调用。GC可以回收大部分的对象(凡是new出来的对象GC都能搞定,一般情况下我们又不会用new以外的方式去创建对象),所以一般是不需要程序员去实现finalize的。
  • 特殊情况下,需要程序员实现finalize,当对象被回收的时候释放一些资源,比如:一个socket链接,在对象初始化时创建,整个生命周期内有效,那么就需要实现finalize,关闭这个链接。

【面试常问】Java中final和finally以及finalize区别?相关推荐

  1. 转 Java中final、finally、finalize的区别与用法

    Java中final.finally.finalize的区别与用法 1.简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构 ...

  2. Java中final、finally、finalize的理解

    导航栏 一.基本理解 1.final的基础理解 2.finally的基础理解 3.finalize的基础理解 二.final使用案例 1.final对于变量的定义 1.在定义的时候初始化. 2.fin ...

  3. Java中final、finally、finalize的简单区别,中等区别,详细区别(Lawliet 修改+注释版)

    简单区别:      中等区别:    虽然这三个单词在Java中都存在,但是并没有太多关联:  final:java中的关键字,修饰符. 1.如果一个类被声明为final,就意味着它不能再派生出新的 ...

  4. Java中final、finally、finalize的区别

    简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构的一部分,表示总是执行. finalize是Object类的一个方法,在 ...

  5. Java中final、finally和finalize的区别

    final.finally.finalize的区别 1.final修饰符(关键字).被final修饰的类,就意味着不能再派生出新的子类,不能作为父类而被子类继承.因此一个类不能既被abstract声明 ...

  6. 面试常问 Java基础 冒泡排序

    冒泡排序就是对一个数组进行排序. 用双层for循环就可以解决. 第一层,决定排序的次数. n个数,进行n-1次排序就行了. 第二层,把相邻的两个数比较,谁小,放到后面和下一个数字比较,谁小谁放到后面, ...

  7. Java中final、finally和finalize的区别(转)

    http://www.cnblogs.com/bluestorm/archive/2012/04/22/2464746.html final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖, ...

  8. [转载] java中final,finally,finalize三者的作用和区别

    参考链接: Java中final,finally和finalize Final是一个修饰符: 当final修饰一个变量的时候,变量变成一个常量,它不能被二次赋值 当final修饰的变量为静态变量(即由 ...

  9. 指南Java面试常问问题及答案

    Java 面试常问问题及答案(非常详细) 一:java 基础 1.简述 string 对象,StringBuffer.StringBuilder 区分 string 是 final 的,内部用一个 f ...

最新文章

  1. VIM命令快速记忆(转自杰哥)
  2. 蓝牙耳机测试用例_移动端测试用例设计总结,这些你得懂!
  3. Ajax基础--创建XMLHttpRequest对象
  4. 微信回应发原图泄露位置信息;华为员工索要离职补偿被起诉;Windows Terminal v0.7 发布 | 极客头条...
  5. UE4之vs2019IntelliSense错误
  6. 面向对象三大特征之多态——Java笔记(七)
  7. 卸载mysql数据库报错_完全卸载mysql数据库图文教程
  8. sap abap开发从入门到精通_SAP开发-ABAP数据字典(搜索帮助增强)
  9. tinymce移动端使用_中小站长该如何做好移动端SEO优化
  10. Windows 10 按电源键只关屏幕不休眠的解决办法
  11. UE4+手柄对应按键测试
  12. 当域名被微信封了怎么办?
  13. 阿里云服务器登陆宝塔
  14. Tesla Bot 特斯拉机器人介绍
  15. 超导材料应用于量子计算机,Nature子刊:超导超材料有望助力量子计算机的实现...
  16. kubectl基本操作
  17. 从伽利略船舱到光子马拉松-破坏相对论的可能性及其后果
  18. 新编计算机基础教程 pdf,《新编计算机公共基础教程(Windows-2000版)》.pdf
  19. Linux上部署和使用Blast序列比对工具
  20. Ribbon--概述

热门文章

  1. 蓝牙baseband概述
  2. Tomcat 配置详解/优化方案
  3. linux 实时性 100ms,实时录播延迟长达100ms
  4. 希尔伯特(hilbert)矩阵与最小二乘法
  5. 2022年蓝桥杯:第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾,文末附真题链接)
  6. 物联网、消费物联网、工业物联网与云计算、大数据服务综合分析报告
  7. 往DAO类中注入@PersistenceContext和@Resource的区别
  8. Spring Data JPA 之 理解 Persistence Context 的核心概念
  9. 怎么让在线视频播放html,HTML5网页视频强制变速倍速播放
  10. 缺失数据填补基础方法(1)——k-Nearest Neighbors (kNN) 填补