关于final关键字的简单理解

本文详细解释了final变量的特性,包括其如何成为常量,以及在基本类型和引用类型中的表现差异。通过具体示例说明了final变量在不同情况下的赋值规则和内存指向行为。

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

一般来说final修饰的变量都会变成常量

凡是对成员变量或者局部变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。final变量经常和static关键字一起使用,作为常量。
final修饰基本数据类型的变量时,必须赋予初始值且不能被改变,修饰引用变量时,该引用变量不能再指向其他对象
而常量是不可更改的

比如定义一个 final int num = 5;
这个时候 如果还对 num进行赋值操作 如 num = 2;就会报错

因为 常量的意思就是 这个num会指向内存中的一块地址 一旦用final修饰num 这个num所指向的内存地址就不可更改,而5在常量池中的一块内存中 2在另一块内存中 因为num所指向的内存地址不可改变所以会报错

在这里插入图片描述

Android Studio也给出了提示 “不能为最终变量num赋值” 也就是说不能改变num所指向的内存地址

第二个例子

在这里插入图片描述

这个时候打印的结果却是 “ab”

为什么同样是final修饰的常量 一个内容 可以更改 一个不可以更改

final是说这个引用所指向的内存不可更改 而我们StringBuffer的append()方法 本质上并不是改变 引用指向的内存地址 而是在mStringBuffer所指向的内存中添加数据 他所指向的还是那块内存 只不过内存中的内容发生了改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值