详解java final关键字

简介: 2.final 使用小贴士赋初值的时机对于final声明的属性可以在如下的位置进行赋值操作:定义时初始化一个值在构造器中在代码块中如果final修饰的属性是静态的,则初始化的位置只能是:(不能在构造器中赋值!)定义时静态代码块final类的坑🕳如果一个类已经是final类,就无需再将方法设置为finalfinal和static搭配使用效率更高,因为底层的编译器做了优化,不会导致类加载final修饰的变量是基本类型:那么变量存储的数据值不能发生改变final修饰的变量是引用类型,其地址值不能改变,但指向对象的内容可以改变


1.final 修饰符的使用场景


  • 当希望类不被继承时


// 希望A类不能被其他类继承
final class A {}


  • 不希望父类的某个方法被子类进行覆盖或者重写


// 希望该方法不能被子类覆盖或者重写
final public void hi() {
    System.out.println("你好,ByteDance!");
}


  • 不希望类的某个属性值被修改


// 不希望类的某个属性值被修改(常量)
public final static double TAX_RATE = 0.007;


  • 不希望某个局部变量被修改


final public void hi() {
    // 不希望某个局部变量被修改
    final int TIMES = 10;
    System.out.println("你好,ByteDance!");
}


2.final 使用小贴士


赋初值的时机


对于final声明的属性可以在如下的位置进行赋值操作:


定义时初始化一个值

在构造器中

在代码块中

如果final修饰的属性是静态的,则初始化的位置只能是:(不能在构造器中赋值!)


定义时

静态代码块


final类的坑🕳


如果一个类已经是final类,就无需再将方法设置为final

final和static搭配使用效率更高,因为底层的编译器做了优化,不会导致类加载

final修饰的变量是基本类型:那么变量存储的数据值不能发生改变

final修饰的变量是引用类型,其地址值不能改变,但指向对象的内容可以改变


目录
相关文章
|
2月前
|
存储 安全 Java
Java面试题:深入探索Java内存模型,Java内存模型中的主内存与工作内存的概念,Java内存模型中的happens-before关系,volatile关键字在Java内存模型中的作用
Java面试题:深入探索Java内存模型,Java内存模型中的主内存与工作内存的概念,Java内存模型中的happens-before关系,volatile关键字在Java内存模型中的作用
24 1
|
2月前
|
Java 开发者
Java中的并发编程:深入理解synchronized关键字
在Java并发编程的领域中,synchronized关键字是实现线程同步的基础工具之一。本文将深入剖析synchronized的作用机制,探讨其在多线程环境下确保数据一致性的重要性,并通过实际案例展示其应用。同时,文章还将比较synchronized与Lock接口的不同之处,以助于开发者更好地选择适合自己场景的同步策略。
|
2月前
|
缓存 安全 算法
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
24 0
|
1月前
|
前端开发 JavaScript Java
【前端学java】java中final修饰符(6)
【8月更文挑战第9天】java中final修饰符(6)
29 2
|
1月前
|
Java Android开发
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
92 1
|
2月前
|
存储 SQL Java
Java实现关键字模糊查询的高效方法及实践
实现关键字模糊查询的方法有多种,每种方法都有其适用场景。在选择合适的方法时,应考虑实际需求、数据量大小、性能要求等因素。正则表达式适用于处理简单文本或小数据集;数据库模糊查询适用于存储在RDBMS中的数据;而第三方库,则适合需要进行复杂搜索的大型项目。选用合适的工具,可以有效提升搜索功能的性能和用户体验。
52 6
|
28天前
|
XML SQL Java
|
29天前
|
存储 Java 对象存储
【Java基础面试四十三】、 static和final有什么区别?
由于网络原因,我无法获取到您提供的链接内容。如果需要我解析该网页,请确保链接有效并重试,或者提供其他问题,我会尽力帮助您。
|
2月前
|
算法 Java API
多线程线程池问题之synchronized关键字在Java中的使用方法和底层实现,如何解决
多线程线程池问题之synchronized关键字在Java中的使用方法和底层实现,如何解决
|
2月前
|
缓存 安全 Java
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
55 4