还搞不懂Java中final关键字的使用及其内存语义?

本文详细介绍了final关键字在Java中的三种主要用途:用于数据、方法及类的声明。在数据方面,探讨了final作为编译器常量的作用,以及如何应用于对象引用和数组;在方法层面,解释了final如何阻止继承类修改其行为;对于类,则说明了final如何确保类不可被继承。

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

使用final主要是三种情况。
1. 数据
  • 修饰编译器常量,必须是基本数据类型,在定义时赋值;
  • 对象引用或是数组,引用恒定不变,不能指向另一个对象,但对象的内容可以改变。
空白final
  • 指声明为final但未给定初值,编译器确保使用前必须初始化;
  • 必须在域的定义处或每个构造器中赋值;
  • 局部变量,使用前赋值就可以。
fianl参数
  • 在参数列表中声明参数为final类型,无法在方法中修改引用指向的对象。
  • 主要用于向匿名内部类传递数据。
2. 方法
  • 将方法锁定,防止继承类修改它的含义;
  • 效率,转为内部调用,但现在虚拟机没什么性能提高了;
  • 类中所有private方法隐式指定为fianl方法;
  • HashTable类中不含有任何final方法;
3. 类
  • 不能继承该类,比如众所周知的String类;
final关键字的内存语义(待续)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值