欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 【面试干货】深入理解Java中的final关键字

【面试干货】深入理解Java中的final关键字

2025/9/27 7:42:58 来源:https://blog.csdn.net/qq_41840843/article/details/139690977  浏览:    关键词:【面试干货】深入理解Java中的final关键字

【面试干货】深入理解Java中的final关键字

  • 一、被 final 修饰的类
  • 二、被 final 修饰的方法
  • 三、被 final 修饰的变量
  • 四、被 final 修饰的常量


💖The Begin💖点点关注,收藏不迷路💖

在Java中,final关键字有多种用途,可以用来修饰类、方法和变量。不同的修饰对象有不同的含义和作用。以下是对这些用法的详细解释:

一、被 final 修饰的类

不可以被继承: 当一个类被声明为 final 时,这个类不能有子类。也就是说,不能从这个类派生出新的类。

例如:

public final class MyClass {// class body
}// 这将导致编译时错误:
// public class SubClass extends MyClass { }

二、被 final 修饰的方法

不可以被重写: 当一个方法被声明为 final 时,这个方法不能在子类中被重写。这样可以避免该方法的行为被改变。

例如:

public class ParentClass {public final void display() {System.out.println("This is a final method.");}
}public class ChildClass extends ParentClass {//  这将导致编译时错误:// public void display() { }
}

JVM 会尝试将其内联,以提高运行效率: 由于 final 方法不能被重写,JVM 可以更容易地进行优化,例如内联调用,即在调用处直接展开方法体,从而减少方法调用的开销,提高运行效率。

三、被 final 修饰的变量

  • 不可变: 被 final 修饰的变量在初始化之后不能再被改变。这适用于基本数据类型和引用类型。

1、修饰基本数据类型: 变量的值在初始化后不能再改变。

例如:

public class MyClass {public static final int MY_CONSTANT = 10;
}

2、修饰引用类型: 引用不可变,但引用指向的对象内容可变。

例如:

import java.util.ArrayList;
import java.util.List;public class MyClass {// 声明一个常量 MY_LIST,它是一个静态的、不可重新赋值的空ArrayListpublic static final List<String> MY_LIST = new ArrayList<>();public static void main(String[] args) {// 允许修改列表的内容,例如向列表中添加元素MY_LIST.add("Hello");// 不允许重新赋值给 MY_LIST,这会导致编译时错误// MY_LIST = new ArrayList<>();}
}

四、被 final 修饰的常量

在编译阶段会存入常量池中: 被 final 修饰的常量(尤其是基本数据类型和字符串常量)在编译时就会被存入常量池中,这样在运行时可以直接使用该值,减少了存取的开销。

例如:

public class MyClass {public static final String CONSTANT = "Hello World";
}

总结起来,final 关键字在Java中提供了一种机制来控制类的继承、方法的重写以及变量的可变性,同时也能帮助JVM进行一些优化,提高程序的运行效率。
在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词