java基础03:final

final在Java中用于修饰类、方法和变量,表示不可变性。final变量一旦赋值后不能改变,final类不能被继承,final方法不能被子类覆盖。局部内部类和匿名内部类只能访问final局部变量以确保数据一致性。
摘要由CSDN通过智能技术生成

说明:

final是java的一个关键字,是最终的意思。

final 表示"最后的、最终的"含义,变量一旦赋值后,不能被重新赋值。被 final 修饰的实例变量(就是已经实例化的对象)必须显式指定初始值。

final 修饰符通常和 static 修饰符一起使用来创建类常量。

修饰类:表示类不可被继承

修饰方法: 表示方法不可被子类覆盖(可以继承!但是不可以重写!声明 final 方法的主要目的是防止该方法的内容被修改),但是可以重载(在一个类中)

修饰变量:表示变量一旦被赋值就不可以更改它的值。

(1)修饰成员变量成员变量是指在一个类中定义的变量):

如果final修饰的是类变量(也就是静态变量)--->归类所有,只能在静态初始化块中指定初始值或者声明该类变量时指定初始值.  

如果final修饰的是成员变量 -->每个实例可以定制的,可以在非静态初始化块、声明该变量或者构造器中执行初始值.

(2)修饰局部变量(局部变量是指在方法中定义的变量):系统不会为局部变量进行初始化,局部变量必须由程序员显示初始化。因此使用final修饰局部变量时,即可以在定义时指定默认值(后面的代码不能对变量再赋值》,也可以不指定默认值,而在后面的代码中对final变量赋初值(仅一次)---〉使用前要赋值,也就是不能为空?null?

(3)修饰基本类型数据引用类型数据

基本类型:其数值一旦初始化后便不能再更改;

引用类型:初始化后不能指向别的对象(不能置为空),但是引用的值是可变的;

相关的面试题:

1.为什么局部内部类和匿名内部类只能访问局部final变量?

(内部类分为局部内部类和匿名内部类...)

可以直接访问外部类的所有成员(也就是非局部的?),包含私有的

内部类编译之后会生成两个class文件,内部类和外部类是同一个级别,它们都是一个class文件;里面的class不会随着外面的class回收而回收,局部内部类和匿名内部类只能访问局部final变量,是为了解决外部类被回收后,变量也跟着消失了,此时内部类就拿不到变量了,但是如果拷贝一份,外部变量变化感知不到,就会出现差异,所以限制内部类只能使用final修饰的变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值