1.final关键字可以用来修饰类,成员方法,方法的参数,成员变量(静态和非静态的)
(1).final修饰类表示类为终类,不能被继承,String就是这样的一个类.
(2).final修饰一个成员方法时,此方法在子类中不能被覆盖.
(3).final修饰成员变量,如果final修饰的是一个基本类型,就表示这个变量被赋予的值是不可变的,即是个常量;如果final修饰的是一个对象,就表示这个变量被赋予的引用是不可变的,而所引用的对象的成员属性是可以改变的.
(4).由关键字abstract定义的抽象类含有必须由继承自它的子类实现的抽象方法,因此无法同时使用final和abstract来修饰同一个类.同样final也不能用来修饰接口,final修饰的类其成员方法都是不能够被重写的。
2.finally块,try{}块中有return,continue, break中并不会影响finally块的执行,finally块会在return之前执行.同样,finally语句块是在循环被跳过(continue)和中断(break)之前被执行.
(1).return-finally测试代码:
public class Main {
public static void main(String[] args) {
int i = 0;
try{
if(i == 0){
System.out.println("before return");
return ;
}
}catch(Exception e){
e.printStackTrace();
}finally{
System.out.println("call finally block");
}
}
}
输出:
before return
call finally block
(2).break-finally测试代码:
public class Main {
public static void main(String[] args) {
for(int i = 0; i < 2; i++){
try{
if(i == 1){
break;
}
}catch(Exception e){
e.printStackTrace();
}finally{
System.out.println("call finally block-"+i);
}
}
}
}
输出:
call finally block-0
call finally block-1
(3).continue-finally测试代码:
public class Main {
public static void main(String[] args) {
for(int i = 0; i < 2; i++){
try{
if(i == 1){
continue;
}
}catch(Exception e){
e.printStackTrace();
}finally{
System.out.println("call finally block-"+i);
}
}
}
}
输出:
call finally block-0
call finally block-1
3.finalize方法
finalize方法属于java.lang.Object类,它的定义如下:
protected void finalize()throws Throwable{}
finalize()方法是GC运行机制的一部分,finalize方法是在GC清理它所从属的对象时被调用,通常被用来释放资源,如果在执行它的过程中抛出无法捕获的异常,GC将终止对此对象的清理,并且此异常会被忽略.
程序调用System的gc()方法,引起GC的执行,GC在清理对象时会调用它的finalize()方法.
测试代码:
class Test{
protected void finalize()throws Throwable{
System.out.println("call finalize()");
}
}
public class Main {
public static void main(String[] args) {
Test t = new Test();
t = null;
System.gc();
}
}
输出:
call finalize()
分享到:
相关推荐
final, finally, finalize的区别
一,谈谈final, finally, finalize的区别。 java面试题
Java中final,finally,finalize三个关键字的区别_动力节点Java学院整理
对于Java中final、finally、finalize的有关问题做下的思维导图,便于深化记忆,希望对你有帮助!注意:文件为.mm后缀建议下载freemind打开,免费的思维导图软件!
final:修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为 父类被继承。因此一个类不能既被声明为abstract 的,又被声明为final 的。将变量或 方法声明为 final,可以保证它们在...
主要介绍了java 基础之final、finally和finalize的区别的相关资料,需要的朋友可以参考下
final 是 Java 中的关键字,它也是 Java 中很重要的一个关键字,final 修饰的类、方法、变量有不同的含义;finally 也是一个关键字,不过我们可以使用 finally 和其他关键字结合做一些组合操作; finalize 是一个不...
Java中final、finally、finalize的区别与用法,困扰了不少学习者,下面我们就这个问题进行一些探讨,希望对大家的学习有所帮助。
主要介绍了详解Java编程中final,finalize,finally的区别,这个在Java面试题中简直是太常见了...需要的朋友可以参考下
1. 注意,final 不是 immutable 2.finalize 真的那么不堪 3. 有什么机制可以替换 finalize 吗
hi 大家好,今日,天气剧变,非常冷,不想出门,于是给大家写了篇文章,关于android final关键字及final,finally,finalize的区别相关知识,具体详情如下所示: 先预告一下,下文中仅涉及java语法的讨论,和Android...
以下是对final,finally,finalize的区别进行了详细的分析介绍,需要的朋友可以过来参考下
1. 注意,final 不是 immutable 2.finalize 真的那么不堪 3. 有什么机制可以替换 finalize 吗
很好的Java面试题第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
Java 中的 final、finally 和 finalize 关键字有什么区别? final:当用“final”关键字声明一个变量时,它的值一旦被赋值就不能改变。当使用“final”关键字声明方法时,它不能在子类中被覆盖。当用“final”...
一,谈谈final, finally, finalize的区别。 Final --修饰符(关键字)。如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。...
final, finally, finalize的区别 &和&&的区别 HashMap和Hashtable的区别 等
《计算机基础》期末复习参考题(夜大)仅供参考