面试经常问的一个问题:final、finalize、finally
来源:互联网 发布:js刷新整个页面 编辑:程序博客网 时间:2024/06/07 10:14
面试Android经常被问到这个问题,还有static,这里整理一下,以便以后学习。
final:
根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。
final类不能被继承,没有子类,final类中的方法默认是final的。如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。
final方法不能被子类的方法覆盖,但可以被继承。 如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。
使用final方法的原因有二:
第一、把方法锁定,防止任何继承类修改它的意义和实现。
第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。
static:
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块。被static修饰的成员变量和成员方法独立于该类的任何对象。
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
finalize:
垃圾回收器决定回收某个对象时,就会运行该对象的finalize()方法。它最主要的用途是回收特殊渠道申请的内存,JNI调用non-Java程序,finalize()的工作就是回收这部分的内存。
1.所有对象被Garbage Collection时自动调用,比如运行System.gc()的时候.
2.程序退出时为每个对象调用一次finalize方法。
3.显式的调用finalize方法
finally
finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源。 如果没有 finally,您的代码就会很费解。
try { ... }catch (){ ... }finally { ... }
- 面试经常问的一个问题:final、finalize、finally
- java面试之final, finally, finalize的区别
- Java面试02--final、finally和finalize的区别
- 面试5 -- Java final,finally,finalize的区别
- final, finally, finalize的区别
- final finally finalize 的区别
- final, finally, finalize的区别
- final, finally, finalize的区别
- final, finally, finalize的区别
- final, finally, finalize的区别
- final finally finalize 的区别
- final, finally, finalize的区别
- final,finally,finalize的区别
- final,finally,finalize的区别
- final,finally,finalize的区别
- final,finally,finalize的区别
- final, finally, finalize的区别
- final, finally, finalize的区别。
- 建立二叉树
- java命名惯例
- hdu 2087 剪花布条 --(KMP,匹配串在主串中不可以重叠)
- 实验五 迭代法解线性方程组与非线性方程(android)
- JavaScript DOM中实现循环创建文办节点并添加属性节点
- 面试经常问的一个问题:final、finalize、finally
- java基础编程思想题目2
- 剑指offer之编程(十)
- mac安装安卓 更改SDK存储位置
- 基本统计分析
- C++中数据值为-1.#IND000000000000
- Dinner
- ArrayList集合源码解析
- Ostu算法