final,finally,finalize之间的区别。

fianl:可以修饰类、变量、方法。修饰类不能被继承,修饰变量只能赋值一次,修饰方法不能被重写。

finally是try语句体中的一个语句体,不能单独使用,用来释放资源。

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

  一个对象的finalize()方法只会被调用一次,而且finalize()被调用不意味着gc会立即回收该对象,所以有可能调用finalize()后,该对象又不需要被回收了,然后到了真正要被回收的时候,因为前面调用过一次,所以不会调用finalize(),产生问题。 所以,推荐不要使用finalize()方法,它跟析构函数不一样。

原文地址:https://www.cnblogs.com/wangffeng293/p/11778349.html

时间: 2024-08-30 11:46:43

final,finally,finalize之间的区别。的相关文章

final 和 static之间的区别和联系

关键字final和关键字static两者的含义并不相似,但是笔者常常使用一段时间后就会忘记它们之间的区别,因为它俩总是相伴着出现.当只出现其中一个时,就对其代表的含义不甚清晰了.故而特地将相关知识点记下,便于每次遗忘时查阅. final final关键字顾名思义代表"最后的",意味着不能被更改.它的定义,可以概括地分为以下三点: 被final修饰的类不能被继承: 被final修饰的方法不能被重写: 被final修饰的变量不能被改变.注:引用类型的变量,引用不可变,但是引用所指向的内容是

Java千百问_03基本语法(011)_final,finally,finalize有什么区别

点击进入_更多_Java千百问 1.final,finally,finalize有什么区别 final,finally是java的关键字,finalize是jdk的一个方法名,它们虽说字面意思类似,但是他们的使用却完全不同.具体如下: final final是一个修饰符关键字. 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承. 如果一个变量或方法声明为final,可以保证它们在使用中不被改变.被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,

final,finally和finalize三者的区别和联系

对于初学者而言(当然也包括我)对于这三者真的不是很陌生,经常会看到它们.但对于三者之间的区别和联系一直是懵懵懂~~ 今天心情不错,那就简单总结一下它们几个的区别和联系吧.如果又不对的地方欢迎批评指正~~ 1.final final是java的中的一个关键字.final关键字可以用来修饰属性,方法和类.还有就是如果内部类要访问局部变量的话,那么对应的局 部变量也必须为final关键字修饰的. 首先,使用final修饰的属性是不能够修改的. 例如:final int VALUE=100; 那么这里的

【动力节点java培训】final, finally, finalize的区别

[动力节点java培训]final, finally, finalize的区别 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承.finally是异常处理语句结构的一部分,表示总是执行.finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等. 如果您对动力节点有兴趣,可以登录官网看看免费教学视频:http://dwz.cn/29yALNN java学习交流QQ群:425

Android源码中final关键字的用法及final,finally,finalize的区别

Android开发的学习流程 final,finally,finalize的区别 Android的发展越来越快,Android开发人员越来越多,当两种情况碰撞,在诸多开发者中跟紧Android步伐脱颖而出就显得十分必要,虽然Android开发行业薪资高,潜力大,但人往高处走,有更大的上升空间就一定要抓住机会,Android开发行业其实很简单,高技能行业行业唯一重要的要求就是技能,所以学好Android开发直接关系到未来的职业发展,千锋Android培训机构作为行业最具权威的Android研发和人

abstract ,interface 之间的区别 和 abstract ,native之间的区别

语法区别: abstract:抽象类--有abstract修饰,有构造方法:interface(接口)没有:   有普通的成员变量:   interface 没有: 有非抽象的普通方法: interface 没有: 抽象方法的访问类型是public,protected:     interface 的抽象方法必须是public abstract 修饰:默认是public abstract: 抽象方法中静态成员的类型可以是任意的: interface 的静态成员的类型必须是 public  sta

android中getWidth()和getMeasuredWidth()之间的区别

先给出一个结论:getMeasuredWidth()获取的是view原始的大小,也就是这个view在XML文件中配置或者是代码中设置的大小.getWidth()获取的是这个view最终显示的大小,这个大小有可能等于原始的大小也有可能不等于原始大小. 从源码上开始分析一下这两个方法的区别.首先来看一下getMeasuredWidth()这个方法. 1 public final int getMeasuredWidth() { 2 return mMeasuredWidth & MEASURED_S

外发外协外包三者之间的区别与联系

1.应当贯彻顾客为中心原则,通过建立体系来控制过程,确保产品质量.不要化精力在符合标准要求上.如果您 的目标.产品的要求不切合顾客要求的话,就是符合了ISO 9001标准要求,不能满足顾客要求的,符合顾客要求了,顾客满意了,不注意质量成本,经济效益,也就不一定能赚到钱的. 2.7.4条采购要求是,如果您从质量管理体系外得到各种影响产品要求符合性的资源(过程也作为一种资源)的话,就必须对这些产品或者活动(也就是过程) 加以控制的."采购"英文是purchasing,"外包过程&

socket,tcp,http三者之间的区别和原理

http.TCP/IP协议与socket之间的区别下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置: 7 应用层 例如HTTP.SMTP.SNMP.FTP.Telnet.SIP.SSH.NFS.RTSP.XMPP.Whois.ENRP 6 表示层 例如XDR.ASN.1.SMB.AFP.NCP 5 会话层 例如ASAP.TLS.SSH.ISO 8327 / CCITT X.225.RPC.NetBIOS.ASP.Winsock.BSD sockets 4 传输层 例如TC