java基础语法--final

本文深入解析Java中final关键字的多种用途,包括修饰成员变量、局部变量、方法和类的规则,探讨不变类的设计原则,以及如何利用final创建常量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

final的用法:

1.final修饰成员变量:

1)类变量:必须要在静态初始化块中指定初始值或者声明该类变量时指定初始值,而且只能在这两个地方之一进行指定;

2)实例变量:必要要在非静态初始化块,声明该实例变量或者在构造器中指定初始值,而且只能在这三个地方进行指定。

2.final修饰局部变量

当final修饰基本数据类型变量时,不能对基本数据类型变量重新赋值,因此基本数据类型变量不能被改变。而对于引用类型变量而言,它仅仅保存的是一个引用,final只保证这个引用类型变量所引用的地址不会发生改变,即一直引用这个对象,但这个对象属性是可以改变的

利用final变量的不可更改性,在满足一下三个条件时,该变量就会成为一个“宏变量”,即是一个常量。

使用final修饰符修饰;
在定义该final变量时就指定了初始值;
该初始值在编译时就能够唯一指定。
注意:当程序中其他地方使用该宏变量的地方,编译器会直接替换成该变量的值

3.final修饰方法

1. 父类的final方法是不能够被子类重写的

2. final方法是可以被重载的

4.final修饰类

当一个类被final修饰时,表名该类是不能被子类继承的

5.final用作不变类上

不变类的意思是创建该类的实例后,该实例的实例变量是不可改变的。满足以下条件则可以成为不可变类:

使用private和final修饰符来修饰该类的成员变量;
提供带参的构造器用于初始化类的成员变量;
仅为该类的成员变量提供getter方法,不提供setter方法,因为普通方法无法修改fina修饰的成员变量;
如果有必要就重写Object类 的hashCode()和equals()方法,应该保证用equals()判断相同的两个对象其Hashcode值也是相等的。


JDK中提供的八个包装类和String类都是不可变类。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值