final的作用以及String为什么不可变

本文探讨了Java中的final关键字在修饰类、方法和变量时的用途,强调了final方法的不可覆盖性和执行效率优势。此外,详细解释了final变量的特性,特别是对于引用类型和基本类型的不同行为。最后,通过分析String类的源码,揭示了String对象不可变性的原因:其内部的字符数组被final修饰,确保了String对象的不可修改性。
摘要由CSDN通过智能技术生成

1. final修饰类

final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。

2. final修饰方法

如果一个类不允许其子类覆盖某个方法(即不允许被子类重写),则可以把这个方法声明为final方法。
使用final方法的原因有二:

把方法锁定,防止任何继承类修改它的意义和实现。
高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

3. final修饰变量(常量)

如果是引用类型,地址不可以改变,其引用的属性值可以改变。如果是基本类型,其值不可改变
另外,通过final修饰,但却没有进行初始化,必须在构造方法中进行初始化,并且只能出现一个构造方法。这叫 空白final
但是,final空白在final关键字final的使用上提供了更大的灵活性,
为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。

补充:final参数
当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值