当前位置: 首页 > news >正文 【Java学习笔记】final关键字 news 2025/5/29 6:16:53 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搭配使用修饰一个属性,调用该属性时不会导致类的加载,即不会执行代码块中的内容 查看全文 http://www.xdnf.cn/news/653653.html 相关文章: 「Python教案」判断语句的使用 《软件工程》第 13 章 - 软件维护 密度矩阵重整化群——DMRG 【GESP真题解析】第 9 集 GESP 二级 2023 年 9 月编程题 2:数字黑洞 如何优化 Python 爬虫的速度 Python开发Excel批量写入工具:多文件独立配置与Tkinter界面设计 IP 网段 DeepSeek-V3-0526乍现 Vue2实现Office文档(docx、xlsx、pdf)在线预览 PDF电子发票数据提取至Excel 【计算机网络】IP 协议深度解析:从基础到实战 LeetCode#第58题:最后一个单词的长度 Python网络编程深度解析 游戏引擎学习第312天:跨实体手动排序 YOLOv1 详解:单阶段目标检测算法的里程碑 SAP ABAP VK11/VK12 创建销售物料价格(附源码) 华润电力招聘认知能力测评及性格测评真题题库考什么? ATPrompt方法:属性嵌入的文本提示学习 饭卡管理系统(接口文档) 对接 uniapp 通过中间层(JSBridge)集成零信任 原生androiid和ios SDK 【iOS】 锁 【iOS】 GCD小结 NTDS.dit 卷影副本提权笔记 sass,less是什么?为什么要使用他们? [特殊字符]《Qt实战:基于QCustomPlot的装药燃面动态曲线绘制(附右键菜单/样式美化/完整源码)》 华为云物联网应用接入对于API及接口调试的梳理 Java设计模式之责任链模式:从基础到高级的全面解析 Chrome 开发中的任务调度与线程模型实战指南 Redis批量删除Key的三种方式 LSTM模型进行天气预测Pytorch版本
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搭配使用修饰一个属性,调用该属性时不会导致类的加载,即不会执行代码块中的内容