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关键字,

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


斑马打印机状态监控进阶:不用SDK也能获取打印状态的3种野路子 本文介绍了三种不依赖官方SDK的斑马打印机状态监控方法,包括SGD命令、TCP端口嗅探和共享打印机日志分析。这些方案适用于老旧系统或网络受限环境,帮助运维人员实时掌握打印状态,提升设备管理效率。特别适合工业自动化和物流仓储场景中的应急处理。 阅读详情

相关推荐

基于多物理参数数据融合和先进人工智能算法的锂电池热失控监测传感器

基于多物理参数数据融合和先进人工智能算法的锂电池热失控监测传感器是多种方案中的优选项!是一种快速、准确、可靠、应用广泛的传感方案!可有效监测锂离子电池热失控风险,保障化学能储能电站安全!

chicheng_danxin的博客 2411

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

final 关键字有哪些用法?

沉默王二 3241

常学常新:《Attention Is All You Need》万字解读!

常学常新:《Attention Is All You Need》万字解读!

hunteritself的博客 3647

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

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

weixin_33866037的博客 546

带隙基准电路设计实战:从HSPICE仿真到Virtuoso版图全流程解析

在模拟集成电路设计中,基准电压源是确保系统精度与稳定性的核心模块。其基本原理在于巧妙结合具有正、负温度系数的电压,通过加权求和实现近似零温度系数的稳定输出,这一特性对于高精度数据转换器、电源管理芯片等至关重要。从工程实践角度,利用HSPICE进行深入的直流工作点、温度扫描和工艺角仿真,是验证电路性能、优化温度系数和电源抑制比的关键步骤。而借助Cadence Virtuoso进行版图实现时,必须重点关注电阻与BJT的匹配布局、敏感节点的保护以及电源完整性设计,以确保设计意图在硅片上得以准确呈现。通过完整的从前

weixin_29181861的博客 286

别再被骚扰了!手把手教你彻底卸载阿里云盾(安骑士)并封禁其IP段

本文详细指导如何彻底卸载阿里云盾(安骑士)并封禁其IP段,帮助用户夺回服务器控制权。从识别监控组件到执行官方卸载脚本,再到手动清理残留文件和配置iptables规则,确保完全阻断云盾通信。适用于追求极致性能或需要完全自主控制的环境。

weixin_42525551的博客 451

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

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

aoba5147的博客 3978

ros2的unity仿真配置(ros2-for-unity)

可以看到unity中输出了Hello World,验证完毕!可以看到unity上监听的/chatter。

m0_63671696的博客 4093

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

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

weixin_46898270的博客 188

PubMedBERT:生物医学NLP中的垂直领域预训练实践与性能突破

本文深入探讨了PubMedBERT在生物医学NLP领域的应用与性能突破。作为专为生物医学文本设计的预训练模型,PubMedBERT通过全词掩码策略和BLURB基准测试,显著提升了命名实体识别、关系抽取等任务的准确率。文章还提供了PubMedBERT的实战应用案例和代码示例,展示了其在医学文献检索和电子病历结构化中的卓越表现。

kite3的博客 284

AI大模型探索之路-训练篇3:大语言模型全景解读

大规模语言模型(Large Language Models,LLM),也称大语言模型或大型语言模型,是一种由包含数百亿以上参数的深度神经网络构建的语言模型,通常使用自监督学习方法通过大量无标注文本进行训练。

寻道AI,探索AI无限可能! 6275

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万+

C# 与蓝牙 BLE 设备通信:基于 Windows.Devices.Bluetooth 实现手环/传感器数据读取

本文介绍了如何利用C#的Windows.Devices.Bluetooth命名空间实现与蓝牙BLE设备的通信。首先概述了BLE技术特性及其在物联网中的应用场景,包括智能穿戴设备和传感器。随后讲解了BLE的GATT协议架构,解析了服务(Service)和特性(Characteristic)的概念。文章重点展示了通过C#实现设备扫描、连接、数据读取的完整代码示例,并详细说明了如何使用通知(Notifications)功能实现实时数据更新。最后提供了订阅心率测量特性变化的实现代码,为开发者提供了完整的BLE设备通

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1322

java final 关键字

java的final关键字详解

tuoniaoxs的博客 3万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java中的final关键字

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

IBLiplus的博客 1万+

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

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

Java中的关键字之final详解

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

m0_62729850的博客 2079

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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、付费专栏及课程。

余额充值