java | final 关键字介绍

在Java中,final关键字用于声明一个常量、不可改变的变量、方法或类。

对于如private final StringUtil stringUtil;这种情况,final关键字具有以下作用:

final的作用

  1. 不可重新赋值

    • final修饰的变量在初始化之后,不能被重新赋值。对于private final StringUtil stringUtil;,这意味着一旦stringUtil被赋值(通常在构造函数中),它就不能再被改变。你不能将stringUtil重新赋值为另一个StringUtil实例。
  2. 确保不变性

    • 使用final关键字可以帮助保证对象的引用不被修改,从而确保对象的一致性和可靠性。在构造函数中对final字段进行初始化,确保了在对象创建后,stringUtil字段的引用不会被改变。
  3. 线程安全

    • final字段的不可变性有助于提高线程安全性,因为一旦对象被构造完成,final字段的引用就不会改变。对于多线程环境,这意味着所有线程看到的都是同一个stringUtil实例,避免了由于修改引用所带来的同步问题。
  4. 编译器优化

    • final变量通常可以使编译器进行更多的优化,因为编译器知道这个变量不会被改变。这有助于提高程序的执行效率。

示例

以下是使用final关键字的实际示例:

1. 构造函数中的初始化

import org.springframework.stereotype.Service;

@Service
public class MyService {

    private final StringUtil stringUtil;

    @Autowired
    public MyService(StringUtil stringUtil) {
        this.stringUtil = stringUtil; // final字段在构造函数中初始化
    }

    public void performTask() {
        String result = stringUtil.concatenate("Hello", "World");
        // 其他操作
    }
}

在这个示例中,stringUtil字段被标记为final,并且在构造函数中被初始化。这样一来,stringUtil在对象创建后就不会被重新赋值。

2. final的字段不可修改

public class Example {

    private final int number;

    public Example(int number) {
        this.number = number; // final字段初始化
    }

    public void updateNumber(int newNumber) {
        // this.number = newNumber; // 编译错误,无法修改final字段
    }
}

在这个示例中,number字段是final的,因此在对象创建后无法修改其值。

总结

  • 不可重新赋值final修饰的变量在初始化后不能重新赋值。
  • 确保不变性:确保对象引用的一致性,提升对象的可靠性。
  • 线程安全:有助于在多线程环境下保持一致性,减少同步问题。
  • 编译器优化:允许编译器进行更多优化,提高性能。

final关键字在设计不可变对象和确保对象的稳定性时非常有用。

posted @   槑孒  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
历史上的今天:
2023-07-25 Ubuntu20.04 文件管理器无法打开
2023-07-25 Ubuntu编译安装GDAL
2023-07-25 CMake Error at CMakeLists.txt: No CMAKE_CXX_COMPILER could be found.
2023-07-25 docker停止所有容器并删除
2023-07-25 ubuntu安装OpenJDK 17,并配置环境变量
2023-07-25 Ubuntu输入su提示认证失败的解决方法
2022-07-25 ArcGIS api for JS三种查询方法比较
点击右上角即可分享
微信分享提示