详解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 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
30 3
|
2月前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
在Java并发编程中,`final`关键字不仅用于修饰变量、方法和类,还在多线程环境中确保对象状态的可见性和不变性。本文深入探讨了`final`关键字的作用,特别是其在final域重排序规则中的应用,以及如何防止对象的“部分创建”问题,确保线程安全。通过具体示例,文章详细解析了final域的写入和读取操作的重排序规则,以及这些规则在不同处理器上的实现差异。
了解final关键字在Java并发编程领域的作用吗?
|
2月前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
23 5
|
2月前
|
缓存 安全 Java
Java中 final、finally、finalize 有什么区别?
本文详细阐述了Java中`final`、`finally`和`finalize`的区别:`final`用于修饰类、方法和变量以表示不可变性;`finally`是用于确保在`try-catch`结构中无论是否发生异常都能执行的代码块;而`finalize`是`Object`类的方法,用于在对象被垃圾回收前执行清理工作,但在JDK 9中已被标记为弃用。
36 0
Java中 final、finally、finalize 有什么区别?
|
2月前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
211 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
2月前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
了解final关键字在Java并发编程领域的作用吗?
|
2月前
|
Java 程序员 编译器
【Java】继承、super、final、子类构造方法
【Java】继承、super、final、子类构造方法
32 0
|
2月前
|
安全 Java 编译器
了解final关键字在Java并发编程领域的作用吗?
【10月更文挑战第8天】在Java并发编程中,`final`关键字具有重要作用,包括保证变量的可见性和不可变性,防止对象引用被意外修改,并帮助编译器优化读取操作及消除不必要的同步。通过确保变量不可变,`final`增强了多线程环境下的安全性与性能。
|
4月前
|
前端开发 JavaScript Java
【前端学java】java中final修饰符(6)
【8月更文挑战第9天】java中final修饰符(6)
39 2
|
4月前
|
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
515 1