JAVA中的final关键字

Java编程:深入理解final关键字 在 java 中 final 关键字的含义为最终的,不可变的意思,final 关键字可以用来修饰类、方法、变量(属性、局部变量、形参)。下文进行详细说明,如有不正之处,欢迎批评指正。修饰类用final修饰的类不能被继承,即不能拥有自己的子类。比如 java.lang.String、sun.misc.Unsafe等都是 final 修饰的类。public final class Animal { 阅读详情
一、final用于构建不可变对象。

根据程序上下文环境,Java关键字
final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法
和变量

二、final用法

1、在class上加入final,表示此class不可以被继承,没有子类,final类中的方法默认是final的,常用于专用的工具类,或者业务实现类,以防止改变原来的实现。

public final class user{




}

2、在方法前加入final,表示此方法不能被子类的方法覆盖,但可以被继承,常用于专用的业务实现方法,不希望在其它用户继承此class的时候覆盖此方法的实现。

public  class user{

        private String userName;

        public final String getUserName(){

                return this.userName;

        }

}

3、在变量(常量)前加上final,表示此变量只能初始化一次,后续不可以被修改,对于基础数据类型来说只能赋值一次,

   对于对象来说,只能初始化一次,但是对于对象中的可变属性来说还是可以修改的。

final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 

final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据
成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。

public  class user{

        public  static final String SEX = “男”;//静态变量

        

        private final String userName = “pplive”;//实例变量

        

        private final List<String> infos = new ArrayList<String>();

        

        private final int age;//可以先定义而不赋值,在构造方法中赋值

        

        public  user(){

                this.age = 10;//在构造方法中赋值

        }

        public  user(int iAge){

                this.age = iAge;//在构造方法中赋值

        }

        public final String getUserInfo(){

                final String sex = “女”;//局部变量

                return this.userName + “##” + sex;

        }

        

}

4、final不能用于修饰构造方法。 

5、父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。

6、final参数 :当方法参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。

public void test(final String userName){ 
   //userName是final类型的,值不允许改变的. 
   System.out.print(userName); 
} 


7
、static和final一块用表示什么

 

static final用来修饰成员变量和成员方法,可简单理解为“全局常量”! 

对于变量,表示一旦给值就不可修改,并且通过类名可以访问。 

对于方法,表示不可覆盖,并且可以通过类名直接访问。

三、其它好处:

1、在JAVA内存模型中,final域能确保对象的初始化过程的安全性,从而可以不受限制的访问不可变对象,并在共享这个对象时无须同步。

2、在代码模块中,如果在只初始化一次对象的时候,在变量对象前加上final关键字,

可以让大家知道此对象在初始化后就不会再修改,可以避免此对象在后续代码编写中再进行赋值,这也是一种良好的编程习惯。


AI协议助手:法律文本解析与智能问答技术解析 自然语言处理(NLP)技术在法律文本解析中展现出巨大潜力,通过BERT等预训练模型实现条款分类与语义理解。结合OCR与知识图谱技术,AI协议助手能快速提取合同核心条款,并以问答形式解释法律术语,显著提升商务场景的决策效率。测试数据显示,该系统对NDA协议的识别准确率达92%,响应时间仅1.2秒,特别适用于人力资源竞业协议、云服务SLA评估等场景。随着RAG架构与法律术语向量库的应用,AI+法律正推动合同审核成本下降67%,未来将在跨境合规、智能谈判等方向持续演进。 阅读详情

相关推荐

TOPSIS+熵权法组合拳:5分钟学会供应商选择决策模型

本文详细介绍了如何运用TOPSIS和熵权法这对黄金组合,快速构建科学、客观的供应商评估决策模型。通过数据标准化、权重计算和综合排序,帮助企业在半小时内完成高效、准确的供应商选择,解决传统主观打分法的弊端,提升供应链管理效率。

weixin_29051149的博客 276

教妹学Java(三十五): final 关键字的用法

final 关键字有哪些用法?

沉默王二 3241

基于航位推算与多传感器融合的高精度避障小车设计

航位推算(Dead Reckoning)是一种在无外部定位信号下通过里程计与惯性测量单元(IMU)持续积分估计位姿的基础导航方法,其核心在于运动学建模、误差累积抑制与多源数据融合。该技术具备低依赖、高实时、强确定性等工程优势,广泛应用于服务机器人、AGV、竞赛无人平台等受限环境下的自主导航系统。结合编码器高分辨率测距与九轴IMU姿态解算,可显著抑制纯里程计漂移,提升短时定位精度至厘米级。本文以全国大学生电子设计竞赛K题为背景,深入实现了一种面向确定性场地的离线建图+航位推算双模协同架构,重点解决嵌入式资源约

weixin_36328210的博客 81

ESP32 SPI与W5500通信详解:从底层原理到实战例程

SPI作为嵌入式系统中最常用的同步串行接口,通过主机、从机和片选信号实现高效全双工通信,而时钟极性与相位的配置直接决定了数据传输的稳定性。在物联网和工业控制场景中,有线以太网往往比WiFi更可靠,此时具备硬件TCP/IP协议栈的W5500芯片成为理想选择。它借助SPI接口与MCU交互,将网络协议栈固化在硬件内部,大幅简化开发流程。本文从SPI基础概念入手,逐步解析ESP32与W5500的硬件接线、寄存器读写原理及控制字节格式,并给出可复用的Arduino例程与常见故障排查方法。适用于数据采集、远程控制、Mo

weixin_33866037的博客 546

C#实战:如何用winmm.dll打造毫秒级高精度定时器(附完整代码)

本文详细介绍了在C#中利用winmm.dll实现毫秒级高精度定时器的完整方案。针对.NET内置定时器精度不足的问题,通过调用timeSetEvent等原生API,提供了超越系统时钟中断周期的精准定时能力。文章包含核心原理剖析、完整的封装类代码以及音视频处理、游戏开发等场景下的实战应用与性能调优指南。

ujm5678901的博客 690

Coding Plan:程序员真实工作的可执行编码决策框架

Coding Plan 是一种面向工程实践的编码决策方法论,它超越传统学习路径,聚焦于代码在真实业务系统中的上下文对齐、影响控制与可演进性保障。其核心在于将模糊的开发直觉转化为可度量、可验证、可协作的日常动作,涵盖目标对齐、上下文锁定、验证闭环、协作契约和演进预留五大锚点。结合2026年AI辅助编码新范式,它强调将大模型作为‘上下文翻译器’而非代码生成器,并通过分钟级工作块、技术债主动发行、可观测性前置等机制,显著提升交付确定性与系统长期健康度。本文详解该框架的底层逻辑与落地实践。

weixin_33326218的博客 437

[java]final关键字的几种用法

在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们来了解一下final关键字及其用法。 final关键字 在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是“这是不可变的”。下面,我们来讲final的四种主要用法。 1.修饰...

aoba5147的博客 3978

【全网最全最详细】智能体提示词prompt教程

定义:提示词是用户输入给AI模型(如ChatGPT、MidJourney等)的指令或问题,用于引导模型生成特定类型的输出。它是用户与AI交互的核心媒介。作用:提示词的质量直接影响AI输出的准确性和相关性。好的提示词能明确任务边界、减少歧义,并激发模型的创造力。提示词就是“给AI下指令的说明书”——越清楚、越具体,AI干得越好!帮你更快、更准地拿到想要的结果,不用和AI“猜谜语”。

qq_38196449的博客 8215

终于明白为什么要加 final 关键字了!

在开发过程中,由于习惯的原因,我们可能对某种编程语言的一些特性习以为常,特别是只用一种语言作为日常开发的情况。但是当你使用超过一种语言进行开发的时候就会发现,虽然都是高级语言,但是它们之间很多特性都是不太相同的。 现象描述 在 Java 8 之前,匿名内部类在使用外部成员的时候,会报错并提示 “Cannot refer to a non-final variable arg inside an i...

weixin_46898270的博客 188

深度强化学习:Actor-Critic、A2C、A3C

Actor-Critic算法是强化学习中常用的一种方法,policy-based,通过演员和评论员或者是策略网络和价值网络的结合进行学习

weixin_51995147的博客 1427

DFT ATPG提升coverage的方法

采用更精确的故障模型,如桥接故障模型(用于描述电路中不应连接的节点之间的短路故障)和路径延迟故障模型(考虑信号在电路路径上的传输延迟),可以使ATPG工具生成更有效的测试向量来覆盖这些特殊故障。假设电路中有一个与门的输入引脚存在固定为0的故障(stuck - at - 0),D - 算法会分析与门的其他输入以及与门输出连接的后续电路逻辑,从而确定整个电路的输入值,使得当该故障存在时,电路的输出与无故障时不同。通过增加测试向量的类型,如功能测试向量和结构测试向量的结合,可以提高故障覆盖率。

Loving_enjoy的博客 968

java中final关键字

final final是java语言中的一个关键字 final表示最终的,不可变的。 final可以修饰变量以及方法,还有类等。 final修饰的类(无法被继承) final class A{ //A 是没有子孙的 } class B extends A{ //错误的, 无法从最终类A进行继承 //B类继承A类 相当于对A类功能进行扩展 //如果不希望别人对A类进行扩展,可以给A类加final关键字,如String类 } final修饰的方法(无法被覆盖,重

MTCya的博客 3万+

Qt Creator牵手DeepSeek,开启AI开发新征程

Qt Creator 是一款功能强大的跨平台集成开发环境(IDE),专为 Qt 应用程序开发量身定制。它支持在编程过程中使用 GitHub Copilot 等编码助手,能帮助开发者为桌面、移动端和嵌入式平台创建软件。在代码编辑方面,Qt Creator 具备代码补全、语法突出显示、重构等功能,内置文档也随手可得,极大提高了代码编写的效率和准确性。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 7188

java final 关键字

java的final关键字详解

tuoniaoxs的博客 3万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java中的final关键字

在java中可以将实例域定义为final。在构建对象是必须初始化这样的值。必须确保在每个构造器执行之后,这个域的值被设置,并且在后面的操作中不再对其修改。使用final声明变量之后,这个值就不能修改,一般final类型的变量都被声明为静态变量,而且是公有类型的,它在内存中被放在一个特有的公共区域。 也就是说,在Java语法中规定,final修饰的成员变量必须有程序员显式地指定初始值。 定义格式...

IBLiplus的博客 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java中的关键字之final详解

final关键字 final修饰抽象类能否被继承,final修饰变量,final修饰方法,final修饰变量的初始化,final关键字的定义与作用,final修饰基本数据类型和引用数据类型的区别

m0_62729850的博客 2079

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java中的final关键字【详解】

目录 一、Java中的final关键字 1、final关键字 2、final关键字修饰类 3、final关键字修饰方法 4、final关键字修饰变量 5、final不能修饰 6、final关键字的好处 一、Java中的final关键字 1、final关键字 final的汉语意思是:最终的;决定性的;不可更改的;跟在Java中的功能一致; 2、final关键字修饰类 被final关键字修饰的类是最终类,意思就是不能有子类; “太监类”、“断子绝孙类”,比如String类; ..

訾博(ZiBo)的博客 6931

Java final关键字

总之,Java 中的final关键字是一个功能强大的工具,具有优点和缺点。它在不可变性、定义算法结构、提供代码清晰度、确保安全性和稳定性、线程安全、以及保护遗留代码等方面起着重要作用。尽管存在一些缺点,如测试和调试的帮助较少、动态性较低、灵活性有限,这些问题可能会使程序的执行更加复杂。然而,如果我们更多地关注其积极的一面而非缺点,我们可以看到final关键字在限制继承、保持值的恒定性以及防止更改和修改方面的重要性。

疯一样的码农 1295

详解Java中的final关键字

文章目录final 简介[^1]final 修饰变量final 修饰类final 修饰方法final 优化编码的艺术 final 简介1 final关键字可用于多个场景,且在不同场景具有不同的作用。首先,final是一个非访问修饰符,仅适用于变量,方法或类。下面是使用final的不同场景: 上面这张图可以概括成: 当final修饰变量时,被修饰的变量必须被初始化(赋值),且后续不能修改其值,实...

Heriam的博客 1073

Java中的final关键字详解

谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。 本篇引自https://www.cnblogs.com/xiaoxi/p/6392154.html,一、final关键字的基本用法在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量

晓太白的博客 3178

Java-final关键字详解

final使用final关键字定义常量,使得这些值在程序运行期间保持不变。

边走、边悟、迟早变好 1418

浅析Java中的final关键字

这里面就是final变量和普通变量的区别了,当final变量是基本数据类型以及String类型时,如果在编译期间能知道它的确切值,则编译器会把它当做编译期常量使用。因此在上面的一段代码中,由于变量b被final修饰,因此会被当做编译器常量,所以在使用到b的地方会直接将变量b 替换为它的 值。当用final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。

2370

java中的关键字-final

java中的关键字-final 1.概述 在Java中声明类、变量和方法时,可使用关键字final来修饰,表示“最终的”。 **final 标记的类不能被继承 。**提高安全性,提高程序的可读性。 String类、System类、StringBuffer类 final 标记的方法不能被子类重写。 比如:Object类中的getClass()。 final 标记的变量( 成员变量或局部变量) 即称为常量 。名称大写,且只能被赋值一次。 final标记的成员变量必须在声明时或在每个构造器中或代码块中显式赋值,

xiaotai1234的博客 2086
上一篇: SEO优化常见操作方法
下一篇: Hibernate中对象的三种状态,以及三种状态间的转化方法
南方的北方
博客等级 码龄14年 7粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值