ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA基础复习-(final,finally,finalize)

2022-01-14 09:05:31  阅读:211  来源: 互联网

标签:return finalize try finally JAVA 方法 final


首先final, finally, finalize之间没有一点关系, 仅仅只是长得像!!!!

1. final关键字

  • final表示不可修改的,可以用来修饰类, 方法, 常量;
  • final修饰类class,表示该类class不能再派生出新的子类,不能作为父类被继承. 因此,一个类不能既被声明为abstract, 又被声明为final;
  • final修饰方法,表示该方法只能被使用,不能被重写(override);
  • final修饰一个变量, 表示该变量在使用过程中, 不可以被修改(被final修饰的变量即为常量)
  • 常量的初始化方式: 
    1.  在final变量定义时,直接给其赋值;
    2.  在构造器中
    3. 这两个地方只能任选其一, 不能同时赋值.

2. finally异常处理机制

finally是java的异常处理机制中的一部分,

finally块的作用就是为了保证无论出现什么情况, finally块里的代码一定会被执行.

        一般来说在try-catch-finally 来进行类似关闭 JDBC连接,释放锁等资源的操作。

        另外扩展一下,

        如果try语句块里有return语句,那么finally还会被执行吗?答案是肯定的。

        那么return都已经跳出方法体了,那finally应该是什么时候执行呢?

        我的理解是在return中间执行。

        例如:

	public int test(){
		int i=0;
		    try{
		    i=1;
		        //do
		    return i;
		        
		    }catch(Exception e){
		        //
		    }finally{
		        i=2;
		    }
			return i;
		}

        调用上面方法return返回的是1而不是2。

        try里面遇到了return,jvm不会立刻return,它会把return后面的结果存起来,然后执行finally语句,注意return的是之前存起来的。也就是说如果在finally执行的语句是和return相关的,是不会被改变的。

3.finalize方法

finallize是Object类的一个方法, 是GC进行垃圾回收前要调用的一个方法.

  • java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除之前做必要的清理工作. 这个方法是在垃圾收集器确定了被清理的对象没有被引用的情况下调用的.
  • finalize是在Object类中定义的, 因此, 所有的类都继承了它. 子类可以覆盖finalize()方法, 来整理系统资源或者执行其他清理工作.
  • 如果实现了非空的这个方法, 那么会导致相应对象回收呈现数量级上的变慢, 在新版JDK中(似乎是1.9之后的版本), 这个方法已经逐渐被抛弃了.

标签:return,finalize,try,finally,JAVA,方法,final
来源: https://blog.csdn.net/weixin_62451143/article/details/122446951

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有