finalize方法_final,finally,finalize三者的含义和区别

final表示不可变的,它可以用来修饰类,方法和变量。

当它修饰类的时候表示该类是不能被继承的,因为抽象类就是用来被继承的,所以abstract关键字和final关键字不能共存。

当它修饰方法的时候表示该方法是不能被重写的。

当它修饰变量的时候表示该变量的值不能发生变化也就是该变量为一个常量。对于用final修饰的变量我们必须在申明它的时候赋值或者是在构造函数中给它赋值。

finally是异常处理中的一个关键字,通常的结构是这样的:

try{ } catch(){ } finally{ },

它一般用于资源释放,比如我们可以在finally块中关闭数据库连接,在这个结构中不管异常有没有发生finally中的代码都会执行。

但是finally中的代码不是一定会被执行。在以下情况下不会执行finally中的代码:

1. 在进入try块之前程序发生异常。

2. 在try块中调用了System.exit(0)终止了虚拟机的运行。

3. 在try块或catch块中程序被中断,比如说死机。

我们再来看下面这个例子:

public class Demo02 {public static void main(String[] args) {
System.out.println(methd());
}public static int methd(){int num = 1;try{return num;
}catch (Exception ex){return 0;
}finally {
num++;
}
}
}

程序运行的结果为:1

这个例子中finally中的代码究竟是在return前还是return后执行的呢?你可能认为是在return 前执行的,我们来看一下程序执行的过程,执行到try块中的return num的时候num的值1会被作为返回值存放到栈中但是这时程序并不会返回,而是去执行num++,num的值变为2,然后程序返回结束,此时返回的还是栈中的num值1。

我们再来看另一个例子:

public classDemo02 {
public static voidmain(String[] args) {
System.out.println(methd());
}
public static intmethd(){
intnum = 1;
try{
returnnum;
}catch(Exception ex){
return0;
}finally{
return2;
}
}
}

这段程序的运行结果为2

在程序执行到try块中的return num时将num中的值1作为返回值保存在栈中,然后执行finally块中的代码,return 2,此时栈中的返回值变为了2,所以最后的结果为2.

总结一下:

1. finally在try块和catch块return执行后,返回前执行。

2. 如果finally中没有return,则其执行结果不影响try和catch中已确定的返回值。

3. 如果finally中有return,则其执行结果会直接返回。

finalize: 是Object类的一个方法,因为所有的类都继承自Object类,所以所有的类都有finalize方法。 在垃圾收集器将该对象清除出内存之前会先调用它的finalize方法,做一些内存清理工作,通常这部分内存是非java内存,如socket,finalize只会被调用一次。

如果该文章对你有帮助别忘了 点赞,收藏加关注,你的支持就是我持续更新的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重磅 | 数据库自治服务DAS论文入选全球顶会SIGMOD,领航“数据库自动驾驶”新时代

简介: 近日,智能数据库和DAS团队研发的智能调参ResTune系统论文被SIGMOD 2021录用,SIGMOD是数据库三大顶会之首,是三大顶会中唯一一个Double Blind Review的,其权威性毋庸置疑。 近日,智能数据库和DAS团队…

python列向输出字符串_Python读取字符串按列分配后按行输出

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

计算机论文哪儿找,查找关于计算机毕业论文.docx

查找关于计算机毕业论文计算机科学技术对现代教育的应用摘要:计算机技术以其便捷性、高可拓展性和丰富的表现形式在现代教育教学工作中发挥着重要的作用,本文简单分析计算机技术在现代教育教学工作中的作用,给出了其具体的应用方式和一些思路…

如何帮用户管好云账本?阿里云数据库助力收钱吧 | 甲子光年

简介: “收钱吧到账100万”成为普通商家最想听到的声音。 你有多久没摸过现金了? 中国互联网络信息中心发布的第47次《中国互联网络发展状况统计报告》数据显示,截至2020年12月,我国移动支付用户规模达到8.54亿;中国人…

Redis 会遇到的「坑」,你踩过几个?

作者 | Magic Kaito来源 | 水滴与银弹这篇文章,我想和你聊一聊在使用 Redis 时,可能会踩到的「坑」。如果你在使用 Redis 时,也遇到过以下这些「诡异」的场景,那很大概率是踩到「坑」了:明明一个 key 设置了过期时间&a…

bert 多义词_自然语言处理:Bert及其他

以下内容主要参考了文末列出的参考文献,在此表示感谢!2018年被认为是NLP技术的new era的开始。在这一年,提出了多种有创新性的技术,而且最后的集大成者Bert在NLP的多项任务中屠榜,造成的震撼不比当初神经网络初次在Ima…

谈谈JVM内部锁升级过程

简介: 对象在内存中的内存布局是什么样的?如何描述synchronized和ReentrantLock的底层实现和重入的底层原理?为什么AQS底层是CASvolatile?锁的四种状态和锁升级过程应该如何描述?Object o new Object() 在内存中占用多…

性能测试在软件测试中的位置,性能测试的响应时间,你真的算对了吗?

今天对nginx的accesslog中响应时间进行性能测试时,发现有个接口,直接返回数据,平均的响应时间也比较大。网上查了下,原来log中用的响应时间是$request_time,它包含了用户数据接收时间,而真正程序的响应时间…

JetBrains发布两项重要更新:基于IDE的远程开发解决方案、轻量级编辑器Fleet

近日,JetBrains 对外发布两项重要产品更新:专为云端和其他服务器打造的远程开发解决方案,以及轻量级编辑器Fleet。 为IntelliJ 平台引入远程开发支持 在近期陆续发布的2021.3 版本的各 IDE 中,JetBrains 向 IntelliJ 平台添加了远…

Hologres揭秘:优化COPY,批量导入性能提升5倍+

简介: 揭秘Hologres优化COPY的技术原理,实现批量导入性能提升5倍 Hologres(中文名交互式分析)是阿里云自研的一站式实时数仓,这个云原生系统融合了实时服务和分析大数据的场景,全面兼容PostgreSQL协议并与…

io密集型和cpu密集型_一次说明白Python爬虫中多线程,多进程,异步IO编程

图/文:迷神我们在Python爬虫中,重要的是讲究速度,如果有10万或者100万Url地址,写过爬虫的都会知道,那估计是非常慢的。我们的Python爬虫一般IO密集型业务,Python爬虫程序需要发起网络请求,必然就…

技术案例分享:WIPTEC采用Aruba边缘服务平台,实现物流配送生产自动化、精简生产力

编辑 | 宋慧 供稿 | Aruba 慧与科技公司旗下Aruba日前宣布,全美零售和电子商务市场订单交付厂商WIPTEC已在其位于魁北克省隆盖尔市新建的1700万平方英尺的配送中心内部署了Aruba ESP(边缘服务平台)网络。 WIPTEC的两个配送中心每年共管理8…

【详谈 Delta Lake 】系列技术专题 之 湖仓一体( Lakehouse )

简介: 本文翻译自大数据技术公司 Databricks 针对数据湖 Delta Lake 的系列技术文章。众所周知,Databricks 主导着开源大数据社区 Apache Spark、Delta Lake 以及 ML Flow 等众多热门技术,而 Delta Lake 作为数据湖核心存储引擎方案给企业带来…

移动网络安装测试软件,家宽众测中国移动手机版(在线宽带网速测试器)V2.0.3 去广告版...

家宽众测中国移动手机版(在线宽带网速测试器)是一款手机宽带网速测试工具,用户可以通过本软件加入中国移动的宽带评测活动各种,反映家中宽带的具体使用情况,支持在线报名参加,抢先体验则有奖励赠送哦,欢迎来下载。软件…

如何删除第一张单页_单页网站-网站建设中独有的风景线

在这个网页技术飞速发展的时代,单页网站由于其自身的特点已经形成了一种独有的风景线。从本质上来说,单页网站就是只有一个页面,滚动长页面来显示相关的网站内容,网站所有菜单都链接到主页相应的部位。一些前卫的客户已经开始关注…

service注入为null_如何解决quartz调度时候,job中的service为null的问题?

在需要用到调度任务的时候,发现job中的通过依赖注入的service对象为null.如下:Component public class ExpiredOrderJob implements Job {Autowiredprivate EmployeeService employeeService; //这里的service对象为nullOverridepublic void execute(Job…

工作7年,我的10条经验总结

简介: 作者是一名很普通的技术工程师,从14年毕业到现在工作了7年。本文将与大家分享一些在职场中的道理和经验,希望能对大家有所启发和帮助。 作者 | 抱真 来源 | 阿里技术公众号 前言 简单做个自我介绍,我是一名很普通的技术工…

从能用到好用,GIS信创如何做到行稳致远?

艾瑞咨询集团出品的《2021年中国信创产业研究报告》中提到,信创内涵体现在“从‘关键环节、部分市场’走向‘全产业链、全行业’的信息技术升级,构建中国自主的IT标准和生态”。本文将从GIS信创的3大关键技术战略出发,解析当下如何快速突破发…

台账软件测试自学,测试情况汇总.docx

一、测试项目数据存储与灾备软件配置项(存储部分)出所测试共包含测试用例32个,其中功能、界面及边界测试16个,接口测试7个,流程测试5个,性能测试2个,软件和数据安全性测试2个。表5-4测试项目列表序号编号测试用例名称用…

CPU静默数据错误:存储系统数据不丢不错的设计思考

简介: 对于数据存储系统来说,保障数据不丢不错是底线,也是数据存储系统最难的部分。据统计,丢失数据中心10天的企业,93%会在1年内破产。那么如果想要做到数据不丢不错,我们可以采取怎样的措施呢&#xff1f…