java基础篇的基本功(2)

参考链接: http://blog.csdn.net/cassiepython/article/details/50544828 https://www.cnblogs.com/bluestorm/archive/2012/04/22/2464746.html

2、final、finalize、finally的区别?

总体区别:

final :用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承。
finally: 是异常处理语句结构中,表示总是执行的部分。  
finallize :表示是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法。允许回收此前未回收的内存垃圾。所有object都继承 finalize()方法
 

final详解:

java中final也用来修饰3类东西:变量,方法和类。
1.变量
final修饰变量表示该变量是不可变的。例如 final int i =1;在程序中i的值就不允许改变了。比较容易混淆的是final用来修饰引用变量时,表示该引用变量是不可变的即引用变量指向的内存地址是不变的,但是被指的内存地址中的类是可以改变的。例如:
final MyClass myClass = new MyClass();
这样声明myClass后,其所指向的内存地址就固定了,但仍然可以改变myClass所引用对象的成员变量。如果试图重用myClass这个变量,让其引用另一个对象则会出错。
myClass = new MyClass();//error!!!
2.方法
final修饰方法时表示该方法是不能被子类重写的。
3.类

final修饰类时表示该类是不能被继承的,由于java的单继承关系,所以该类是继承关系链中的终端。

关于final的几个注意事项:

a、final变量必须在声明的时候初始化或是在构造函数中初始化;
b、接口中声明的所有变量都是final的;
c、final,finally,finalize的区别。final表示不可变,final表示必须执行的语句,finalize表示垃圾回收时执行的代码。

finally

当代码抛出一个异常时,就会终止方法中剩余代码的处理,并退出这个方法的执行。假如我们打开了一个文件,但在处理文件过程中发生异常,这时文件还没有被关闭,此时就会产生资源回收问题。对此,java提供了一种好的解决方案,那就是finally子句,finally子句中的语句是一定会被执行的,所以我们只要把前面说的文件关闭的语句放在finally子句中无论在读写文件中是否遇到异常退出,文件关闭语句都会执行,保证了资源的合理回收。

finalize

finalize方法来自于java.lang.Object,用于回收资源。

可以为任何一个类添加finalize方法。finalize方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值