解析final,finally,finalize的区别

1.final 在java中可以用来修饰类,方法,变量和成员变量;
1.1 final用来修饰类时,则该类不可以有子类。而且该类的方法和成员变量默认是final;
1.2 final修饰方法时,主要有两个原因:1.修饰方法时,以免在子类中被修改;2. 在旧版本会将final修饰的方法转化为内嵌调用,但若方法过于庞大,则会影响性能;在新版本中不建议使用;若父类中的方法的权限改为private,将导致子类不能直接继承该方法,若子类中出现与父类同名的方法,则不会重写父类的方法,而是在子类中重新定义的方法。
1.3 final 修饰变量时,该变量是一个常量,不可以被修改。若final修饰的是引用类型的变量,则引用的内容可以发生变化,因为对final而言,不变的是值,引用的值所对应的是地址。final 修饰成员变量时,成员变量必须初始化,初始化的2种方法为1.在声明时初始化,2.在构造器中初始化。
注:字符串常量池是存在于java堆的一块特殊的存储空间。
2.finally 作为异常处理的一部分,通常在try/catch 中并附带一句。如果程序执行了try块,则一定会执行finally语句块,finally会屏蔽掉try块中返回值;
3. finalize 是Object 的一个方法,是在启动gc时,会调用该方法。一个对象的finalize()方法只会被调用一次,而且finalize()被调用不意味着gc会立即回收该对象,所以有可能调用finalize()后,该对象又不需要被回收了,然后到了真正要被回收的时候,因为前面调用过一次,所以不会调用finalize(),产生问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值