【面试常问】Java中final和finally以及finalize区别?
说一下final和finally以及finalize区别?
在面试中如果问到这个问题,我们应该咋么回答呢?我就写一下我的看法如有错误还请个位指正!
文章目录
- 说一下final和finally以及finalize区别?
- final修饰符
- finally代码块中
- finalize一个方法
final修饰符
可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值;
小结:
- final修饰的成员变量,必须在声明的同时赋值,一旦创建不可修改(常量);
- final修饰的方法,不能被子类重写;
- final类中的方法默认是final的,该类不能被继承;
- 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区别?相关推荐
- 转 Java中final、finally、finalize的区别与用法
Java中final.finally.finalize的区别与用法 1.简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构 ...
- Java中final、finally、finalize的理解
导航栏 一.基本理解 1.final的基础理解 2.finally的基础理解 3.finalize的基础理解 二.final使用案例 1.final对于变量的定义 1.在定义的时候初始化. 2.fin ...
- Java中final、finally、finalize的简单区别,中等区别,详细区别(Lawliet 修改+注释版)
简单区别: 中等区别: 虽然这三个单词在Java中都存在,但是并没有太多关联: final:java中的关键字,修饰符. 1.如果一个类被声明为final,就意味着它不能再派生出新的 ...
- Java中final、finally、finalize的区别
简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构的一部分,表示总是执行. finalize是Object类的一个方法,在 ...
- Java中final、finally和finalize的区别
final.finally.finalize的区别 1.final修饰符(关键字).被final修饰的类,就意味着不能再派生出新的子类,不能作为父类而被子类继承.因此一个类不能既被abstract声明 ...
- 面试常问 Java基础 冒泡排序
冒泡排序就是对一个数组进行排序. 用双层for循环就可以解决. 第一层,决定排序的次数. n个数,进行n-1次排序就行了. 第二层,把相邻的两个数比较,谁小,放到后面和下一个数字比较,谁小谁放到后面, ...
- Java中final、finally和finalize的区别(转)
http://www.cnblogs.com/bluestorm/archive/2012/04/22/2464746.html final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖, ...
- [转载] java中final,finally,finalize三者的作用和区别
参考链接: Java中final,finally和finalize Final是一个修饰符: 当final修饰一个变量的时候,变量变成一个常量,它不能被二次赋值 当final修饰的变量为静态变量(即由 ...
- 指南Java面试常问问题及答案
Java 面试常问问题及答案(非常详细) 一:java 基础 1.简述 string 对象,StringBuffer.StringBuilder 区分 string 是 final 的,内部用一个 f ...
最新文章
- VIM命令快速记忆(转自杰哥)
- 蓝牙耳机测试用例_移动端测试用例设计总结,这些你得懂!
- Ajax基础--创建XMLHttpRequest对象
- 微信回应发原图泄露位置信息;华为员工索要离职补偿被起诉;Windows Terminal v0.7 发布 | 极客头条...
- UE4之vs2019IntelliSense错误
- 面向对象三大特征之多态——Java笔记(七)
- 卸载mysql数据库报错_完全卸载mysql数据库图文教程
- sap abap开发从入门到精通_SAP开发-ABAP数据字典(搜索帮助增强)
- tinymce移动端使用_中小站长该如何做好移动端SEO优化
- Windows 10 按电源键只关屏幕不休眠的解决办法
- UE4+手柄对应按键测试
- 当域名被微信封了怎么办?
- 阿里云服务器登陆宝塔
- Tesla Bot 特斯拉机器人介绍
- 超导材料应用于量子计算机,Nature子刊:超导超材料有望助力量子计算机的实现...
- kubectl基本操作
- 从伽利略船舱到光子马拉松-破坏相对论的可能性及其后果
- 新编计算机基础教程 pdf,《新编计算机公共基础教程(Windows-2000版)》.pdf
- Linux上部署和使用Blast序列比对工具
- Ribbon--概述
热门文章
- 蓝牙baseband概述
- Tomcat 配置详解/优化方案
- linux 实时性 100ms,实时录播延迟长达100ms
- 希尔伯特(hilbert)矩阵与最小二乘法
- 2022年蓝桥杯:第十三届蓝桥杯大赛软件赛省赛C/C++大学B组真题(考后回顾,文末附真题链接)
- 物联网、消费物联网、工业物联网与云计算、大数据服务综合分析报告
- 往DAO类中注入@PersistenceContext和@Resource的区别
- Spring Data JPA 之 理解 Persistence Context 的核心概念
- 怎么让在线视频播放html,HTML5网页视频强制变速倍速播放
- 缺失数据填补基础方法(1)——k-Nearest Neighbors (kNN) 填补