java——final、finally、finalize

本文详细解释了Java中final、finally和finalize的区别与用法。final作为修饰符用于定义不可变的对象,finally用于异常处理确保代码块总是被执行,而finalize则是在对象被垃圾回收前进行资源清理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

final、finally、finalize

1、final——是修饰符

final类似于C++中得const,可以用来修改不可改变的对象,如基本类型的变量和对象变量。

finalinta = 0;

void fun(finalBaseb)

{

}

final方法:1、该方法可继承但不能复写;2、编译器可将其转化为inline方法

publicclass test 

{

finalvoid fun()

{

}

}

final类:不可继承。由于类不可继承,自然方法也无法继承,此时方法便是final类型。

finalpublicclass test 

{

void fun()

{

}

}


2、finally

用于异常处理。无论是否有异常,finally结构的代码总会执行,所以可用来维护对象内部状态并可以清理非内存资源。


3、finalize——方法名

java允许使用finalize()方法在垃圾收集器将对象从内存中清楚出去之前做必要的清理工作,也就是确定该对象没有被引用时才有可能对此对象调用的,且做多调用一次。它在Object类中定义的,所有的类都继承了该方法,当然子类也可以复写该方法来执行清理工作。

package test;


publicclass test 

{

publicstaticvoid main(String[]args)

{

A a1 =new A();

System.out.println("a:"+a1.a);

a1.finalize();

System.gc();

}

}

class A

{

inta = 0;

A()

{

a = 1;

}

publicvoid finalize()

{

System.out.println("finalize");

if (1 ==a)

System.out.println("a=1");

elseif (0 ==a)

System.out.println("a=1");

}

}

结果:

a:1

finalize

a=1


注:系统未必会一定调用finalize()方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值