当前位置: 首页 > news >正文 【Java学习笔记】final关键字 news 来源:原创 2025/6/18 4:08:01 final 关键字 一、final 关键字介绍 1. final可以修饰类、属性、方法和局部变量 2. final 的使用场景 (1)类不能被继承时,可以使用final修饰 (2)类的某个属性不可以被更改,可以使用final修饰 (3)父类的某个方法不能被子类重写,可以使用final修饰 (4)某个局部变量不能被修改,可以使用final修饰 补充说明:关于局部变量 1. 可以是循环中的局部变量 2. 可以是方法中的局部变量 二、final 关键字使用细节 (1)final 修饰的属性又叫常量,一般用 XX_XX_XX 来命名。 (2)final 修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一(选择一个位置赋初值即可) 1. 在定义时 2. 在构造器中 3. 在代码块中 (3)如果 final 修饰的属性是静态的,则初始化的位置只能是 1. 在定义时 2. 在静态代码块中 3. 不能在构造器中赋值 (4)final 类不能继承,但是可以实例化对象(可以创建一个 final 类的对象) (5)如果类不是 final 类,但是含有 final 方法,则该方法不能重写,但是可以被继承 (6)代码规范:如果一个类已经是final类了,就没有必要再将该类中的方法修饰成final方法了 (7)final不能修饰构造器 (8)包装类(Integer,Double,Float,Boolean等都是final),String也是final类 (9)(重点!)final和static往往搭配使用,效率更高,不会导致类加载(底层编译器做了优化处理) 理解:为什么不会导致类加载? 1. 编译器将 static final 的常量值直接存储到调用类的常量池中。 2. 使用该常量时,JVM 直接使用常量池中的值,不需要访问定义常量的类,自然就不会触发类的初始化(即类加载)。 代码示例:解释第 9 点 package final_;public class main {public static void main(String[] args) {System.out.println(A.a);} }class A{public final static int a = 10;static {System.out.println("代码块被调用");}public A(){System.out.println("构造器被调用");} }// 输出结果 10 代码解析 final和static搭配使用修饰一个属性,调用该属性时不会导致类的加载,即不会执行代码块中的内容 相关文章: 蚂蚁集团 CTO 何征宇:AGI时代,海量数据带来的质变|OceanBase 开发者大会实录 GitHub 趋势日报 (2025年05月25日) 刷机维修进阶教程-----没有开启usb调试 如何在锁定机型的拨号界面特殊手段来开启ADB 大数据学习(121)-sql重点问题 C++ STL Queue容器使用详解 uniapp-商城-69-shop(2-商品列表,点击商品展示,商品的详情, vuex的使用,rich-text使用) VMware Live Recovery 和 VMware Data Recovery区别 Ubuntu | NVIDIA 驱动、CUDA 与 cuDNN 的安装与配置 / 常见问题及解决方法 RAGFlow源码安装操作过程 爬虫学习-Scrape Center spa2 超简单 JS 逆向 利用python爬虫获取淘宝天猫商品评论封装API实战演示 Python 爬虫开发 YOLO 算法详解:实时目标检测的里程碑 Java 树形结构,根据名称搜索 知识宇宙-职业篇:软件测试工程师 【VASP】PBE与HSE之前的区别 moviepy视频添加中文水印 [yolov11改进系列]基于yolov11替换卷积神经网CNN为KANConv的python源码+训练源码 谷歌Veo vs Sora:AI视频生成技术的巅峰对决 【Unity3D】将自动生成的脚本包含到C#工程文件中 网站logo怎么做/广西网络优化seo 视频推广联盟/搜索引擎优化论文3000字 网站制作制作公司/网络营销顾问工作内容 建网上商城的第三方网站哪个好/新闻头条最新消息30字 文化网站策划/南京网站推广排名 视频直播网站架构/百度新闻官网
final 关键字 一、final 关键字介绍 1. final可以修饰类、属性、方法和局部变量 2. final 的使用场景 (1)类不能被继承时,可以使用final修饰 (2)类的某个属性不可以被更改,可以使用final修饰 (3)父类的某个方法不能被子类重写,可以使用final修饰 (4)某个局部变量不能被修改,可以使用final修饰 补充说明:关于局部变量 1. 可以是循环中的局部变量 2. 可以是方法中的局部变量 二、final 关键字使用细节 (1)final 修饰的属性又叫常量,一般用 XX_XX_XX 来命名。 (2)final 修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一(选择一个位置赋初值即可) 1. 在定义时 2. 在构造器中 3. 在代码块中 (3)如果 final 修饰的属性是静态的,则初始化的位置只能是 1. 在定义时 2. 在静态代码块中 3. 不能在构造器中赋值 (4)final 类不能继承,但是可以实例化对象(可以创建一个 final 类的对象) (5)如果类不是 final 类,但是含有 final 方法,则该方法不能重写,但是可以被继承 (6)代码规范:如果一个类已经是final类了,就没有必要再将该类中的方法修饰成final方法了 (7)final不能修饰构造器 (8)包装类(Integer,Double,Float,Boolean等都是final),String也是final类 (9)(重点!)final和static往往搭配使用,效率更高,不会导致类加载(底层编译器做了优化处理) 理解:为什么不会导致类加载? 1. 编译器将 static final 的常量值直接存储到调用类的常量池中。 2. 使用该常量时,JVM 直接使用常量池中的值,不需要访问定义常量的类,自然就不会触发类的初始化(即类加载)。 代码示例:解释第 9 点 package final_;public class main {public static void main(String[] args) {System.out.println(A.a);} }class A{public final static int a = 10;static {System.out.println("代码块被调用");}public A(){System.out.println("构造器被调用");} }// 输出结果 10 代码解析 final和static搭配使用修饰一个属性,调用该属性时不会导致类的加载,即不会执行代码块中的内容