final的用法
来源:互联网 发布:辐射4超低配优化ini 编辑:程序博客网 时间:2024/05/16 06:38
面试的时候,经常被问到final不同用法的区别,所以特意总结一下。
使用final主要有三种情况:数据,方法和类。
- final数据
用于基本数据类型,final使数值恒定不变;用于对象引用,final使引用恒定不变。一旦引用被初始化指向一个对象后,就无法把它改为指向另一个对象。但是,对象其自身是可以被修改的。如下例
class Value{
int i;
public Value(int i){
this.i = i;
}
}
public class FinalData {
private int k = 0;
private final int j = 0;
private Value v1 = new Value(13);
private final Value v2 = new Value(12);
public static void main(String[] args) {
FinalData data = new FinalData();
data.k = 1;
// data.j = 1;//无法通过编译,因为j是基本类型,被声明为final后,无法改变其数值
data.v1 = new Value(12);
// data.v2 = new Value(12);//无法通过编译,final用于对象引用时,这个引用无法在指向别的对象,但是可以修改这个对象本身
data.v2.i = 12;//可以改变对象本身
}
}
补充说一点,final对象在使用前一定要被初始化,所以一般都是在声明的时候就进行初始化。如果不能再声明时立马初始化,那就要在构造器里对final数据进行初始化。
- final参数
可以在参数列表中将参数声明为final,这样在方法中就无法更改参数引用所指向的对象了,这一特性主要用来向匿名内部类传递数据。
public void print(final String str){
//str = "abc";//无法通过编译
}
- final 方法
final修饰的方法无法在子类中被覆盖
class SuperClass {
public final void div() {
}
}
public class Child extends SuperClass {
// public final void div() {
// 不能覆盖final方法
// }
}
- final 类
当将某个类整体定义为final时,这个类无法被别的类继承。
final class Value{
int i;
public Value(int i){
this.i = i;
}
}
//无法通过编译
class Child extends Value{
}
- final的用法
- 关于Final的用法
- final的用法
- final的用法
- 关键字final的用法!!
- final的用法
- java final的用法
- final的用法
- final关键字的用法
- java final的用法
- java final的用法
- final的用法
- final的用法
- final关键字的用法
- final的用法
- static、final的 用法
- final关键字的用法
- final 关键字的用法
- HBase rest 和thrift java例子
- hibernate缓存:一级缓存和二级缓存
- sqlserver游标概念与实例全面解说
- Oracle执行计划学习
- fcntl函数说明
- final的用法
- 项目图标名称处出现红色叹号
- 学习开发日志
- POSIX和SYSTEM的消息队列应该注意的有关问题
- VMware的四种网络连接方式
- 《机器学习基石》第5讲 学习记录
- [IOS] Storyboard全解析
- GDAL编译
- 由中根序列和后根序列重建二叉树