Java | final关键字快速上手【通俗易懂,看这篇就够了】

【JAVA】final关键字 在默认情况下,所有的成员变量和成员方法都可以被子类重写。如果父类的成员不希望被子类重写,可以在声明父类成员时使用final关键字修饰。final有“最终”“不可更改”的含义。在Java中,可以使用final关键字修饰类、属性、方法。 阅读详情

一、final关键字介绍及引入

首先说明一下final关键字的基本用法,final翻译过来就是最终的意思,也就是处于最后的位置,是不可被修改的,final关键字主要用于修饰类、方法和变量

二、final关键字修饰类

final修饰类表明该类不能被继承

1、简单案例分析

  • 这里先是定义了一个Animal动物类,并且在其类前加上了final关键字
final class Animal{}
  • 然后执行了一步这样的操作,用一个Wolf🐺类去继承这个动物类,但是系统却报出了错误
class Wolf extends Animal{}     //不能继承

  • 从中可以看出,对于final关键字修饰的类,该类是不可以被继承的,这个我们前面讲static关键字讲到的一个知识点【工具类】可以联系起来,我们知道,工具类是不可以被继承的,只是将一个功能封装成为一个类,然后外界可以通过这个类去很快地实现一些功能,从而提高开发的效率,所以对于工具类,我们就可以给其加上final关键字

2、JDK中的final修饰类【String、System、StringBuilder】

对于JDK【Java开发工具包】中也是有许多我们常见的用final修饰的类,只是我们没有认真地去阅读API文档,所以不太了解

  • 首先第一个就是String类

  • 然后是System类

  • 最后再来一个StringBuilder类

其实在JDK中还要很多我们熟知的类都是用final关键字修饰,表明这些类都是不可以被继承的,是一种Java官方提供给我们的工具类,我们可以直接拿来使用,调用其中的功能即可😀

三、final关键字修饰方法

final修饰方法表示该方法不能被重写

  • 首先我们定义一个Peopel人类
class People{         
    public final void eat(){    //不能重写
        System.out.println("人都要吃东西");
    }
}

  • 这里要注意,我并没有拿final关键字去修饰这个类,==因此是可以被继承的==,但是我们这个类中的eat()方法前加了一个final关键字,接着就定义一个Teacher老师类去继承它
class Student extends People{
    @Override
    public void eat() {
        System.out.println("学生吃很多");
    }
}

  • 在继承子类中,我去重写了这个方法,然后就报出了这样的错误:point_down:

     

  • 这就可以看出,被final修饰的方法是不可以被继承的子类所重写的,通俗一点讲就是【子类要老老实实地继承父类的方法,不可以做任何篡改】这点也是要记住哦:point_left:

四、final关键字修饰变量

final修饰成员变量表示该变量在进行声明时只能进行一次赋值,不可在后面修改其值(有且仅能被赋值一次)

  • 我们知道,变量分为局部变量和成员变量,而成员变量又分为静态成员变量和实例成员变量,接下来让我们一起来看看吧:runner:

1、局部变量

  • 对于局部变量来讲,可以是过程中定义的,也可以是形参变量
//1.局部变量
final double pi = 3.14;
//pi = 9.1;     不能第二次赋值

  • 从代码和运行结果来看,应该是一目了然,不可以做二次赋值
public static void buy(final double discount){
    //discount = 9.9;   不能第二次赋值
}

buy(7.9);       //接值的时候为第一次赋值

  • 这里的方法形参也是一样,如果定义成用final关键字修饰,那一定是不可以在方法体中对其进行赋值的,==因为你在调用这个方法的时候系统会让你一定要传入参数==

2、成员变量

接下来我们来看看final修饰的成员变量

public class Test2 {
    //2.成员变量 - 静态成员变量(常量)
    public static final String SchoolName = "清华大学";
    //2.成员变量 - 实例成员变量(几乎不用)
    private final String name = "猪刚鬣";

    //SchoolName = "ddd";   无法赋值
    Test2 t2 = new Test2();
    System.out.println(t2.name);
    //t2.name = "猪八戒";   无法赋值
}

  • 好,我们先来看一下这个,在这个Test2类中,声明了一个静态成员变量,一个实例成员变量,都用final关键字对其进行了一个修饰,而且都有了一个初始值
  • 所以在下面的代码中,无法对则会两个成员变量再次进行赋值,否则就会出现和上面那些报错一样的情况,算了,还是给出来看一下吧😀

     

五、final关键字注意事项

  • 这里有些小伙伴可能就有疑惑了,这个final关键字难道真的是一毛不拔吗,无论是修饰类、方法还是变量,完全就不能修改里面的任何东西吗?
  • 那倒也不是:point_up:

final修饰的变量是基本类型:那么变量存储的数据值不能发生改变:grin:

final修饰的变量是引用类型,其地址值不能改变,但指向对象的内容可以改变:heart_eyes:

class Teacher{
    private String hoppy;

    public Teacher(String hoppy) {
        this.hoppy = hoppy;
    }

    public String getHoppy() {
        return hoppy;
    }

    public void setHoppy(String hoppy) {
        this.hoppy = hoppy;
    }
}

final Teacher t = new Teacher("吃饭,睡觉,打豆豆");
System.out.println(t.getHoppy());
//t = null;           //二次赋值
t.setHoppy("游泳");
System.out.println(t.getHoppy());

  • 从上述代码可以看出,我通过final修饰的Teacher类型去new了一个对象,然后为其兴趣爱好赋了一个初值,那这个对象的地址能不能被修改呢,答案是【不可以】,这就算是一个二次赋值了,但是这个对象的内容我们是可以修改的,只需要调用这个类中的SetHoppy()方法就可以了,可以看出系统也是没有给我们报错

六、总结与回顾

  • 在本文中,我们讲解了Java中的final关键字,知道了用final关键字修饰的类、方法和变量都是很严谨,不能做修改的,但是对于final修饰的引用类型变量,虽然其地址值不能改变,但指向对象的内容可以改变
Linux单独编译设备树,开发者分享 | Petalinux 工程中设备树的介绍 本文来自XILINX嵌入式产品应用工程师 Terry Ni设备树是 Petalinux kernel 的关键组件,接下来以 2020.1 版本为例,为大家介绍一下在Xilinx Petalinux 工程中的设备树是如何产生,配置以及修改的。Petalinux 工程中设备树的位置当我们创建了一个 petalinux 工程后(以zcu102为例),在编译的时候,会自动生成对应的设备树文件。这些设备树的... 阅读详情

相关推荐

手把手教你搞定6脚三位一体数码管的驱动(附C语言源码与Visual Studio调试技巧)

本文详细解析了6脚三位一体数码管的驱动原理与实战技巧,包括引脚复用、动态扫描时序、Visual Studio模拟调试及单片机实现。通过C语言源码示例和调试技巧,帮助开发者快速掌握非标准数码管的驱动方法,提升硬件开发效率。

weixin_30613727的博客 591

final 关键字

final 关键字

qq_48010634的博客 422

基于java的汉服商城管理系统设计与实现的详细项目实例

本文介绍了一个基于Java的汉服商城管理系统设计与实现项目。该项目采用三层架构设计,包含用户模块、商品管理、订单处理、支付结算等核心功能,支持多角色权限控制和响应式前端界面。 系统创新点包括: 专业化的汉服商品管理,支持多规格属性组合 高并发订单处理机制,确保库存实时同步 个性化智能推荐算法提升用户体验 细粒度权限控制保障系统安全 项目采用SpringBoot+MyBatis技术栈,前端使用React框架实现跨设备兼容。数据库设计包含用户表、商品表、订单表等10个核心表,通过事务管理确保数据一致性。 系统解

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 804

java中常用final修饰的类有哪些?

java.long包中有 Boolean Byte Short Character Integer Long Float Double(八大基本数据类型的包装类) String StringBuffer StringBilder(字符串) Math StrictMath(系统) java.util包中有 Scanner Arrays java.lang.reflect包中有 Array Constructor Field Parameter java.net包中有 URLEncoder URL URI

qq_45746493的博客 854

常微分方程 (ODE) 和 随机微分方程 (SDE)

常微分方程(Ordinary Differential Equations, ODE)和随机微分方程(Stochastic Differential Equations, SDE)是数学中描述系统动态行为的重要工具。它们有一些相似之处,但在处理随机性方面存在显著差异。

weixin_39699362的博客 4384

二十八.国民技术MCU开发之UID获取与应用

在国民NT MCU中均有一个96位和128位的唯一设备标识符,其中UCID128 位, UID 为 96 位。手册中描述的作用是:通常用来做为序列号或作为密码,在编写闪存时,将此唯一标识与软件加解密算法相结合,进一步提高代码在闪存存储器内的安全性,也可用于激活带安全功能的自举程序(SecureBootloader)。UCID 和 UID,遵守国民技术芯片序列号定义,它包含芯片生产及版本相关信息。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 1677

Java中final关键字理解

最近毕业面试,有几家都问到了final关键字的使用。谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。下面是本文的目录大纲:  一.final关键字的基本用法  二.深入理解final关键字  若有不正之处,请多多谅解并欢迎指正。原文链接:http:/...

NathanniuBee的博客 689

人工智能训练师三级考试大纲深度解读|理论+实操分值分布+六大模块占比

三级人工智能训练师考试分为理论和实操两大模块(各100分,合格线60分)。理论考试包含AI基础(30%)、数据标注(25%)、模型训练(20%)、测试(15%)和系统运维(10%),题型为客观题;实操考核侧重数据标注(40%)、模型测试(35%)和系统运维(25%),采用现场操作形式。复习应优先关注AI基础和数据标注等高分值模块,实操需重点掌握标准流程和结果准确性(占评分70%)。考试要求两模块均达标,理论侧重概念理解,实操强调规范执行与文档完整。

白话机器学习 1097

final修饰符

Java中的final修饰符可以用于类、方法和变量上。它的主要作用是表示“最终的”、“不可修改的”、“只能赋值一次的”。

weixin_58724261的博客 1321

35、使用 Geo 创建 GitLab 的分布式只读副本

本文详细介绍了如何使用GitLab Geo功能创建分布式只读副本,涵盖数据库主从配置、SSH密钥查找方式更改、通过Web UI添加从节点、激活哈希存储及状态检查等关键步骤。同时提供了常见问题解答和配置流程图,帮助用户快速部署并维护Geo集群,实现跨地域的高效数据同步与高可用架构。

chair的专栏 81

学Simulink——基于Simulink的单相PWM整流器PI电压外环+电流内环控制建模示例

本文详细介绍了基于Simulink的单相PWM整流器双闭环控制仿真方法。通过电压外环PI控制器调节有功功率生成电流指令,电流内环PI控制器实现正弦电流跟踪,最终达到输出电压稳定(400V±2V)、输入电流THD<3%、功率因数>0.99的目标。文章包含系统架构、数学模型、Simulink搭建步骤(主电路、PI控制器、SPWM调制等)及三种典型工况的仿真验证,并给出电感设计、数字实现等工程实践要点。该方案克服了传统整流器高谐波、低功率因数的问题,为绿色电源开发提供了可验证的仿真模型。

xiaoheshang_123的博客 74

Java | final关键字快速上手

在本文中,我们讲解了Java中的final关键字,知道了用final关键字修饰的类、方法和变量都是很严谨,不能做修改的,但是对于final修饰的引用类型变量,虽然其地址值不能改变,但指向对象的内容可以改变。

Huangjiazhen711的博客 127

RK3588 hdmirx 调试(含v4l2工具,edid编辑)

RK3588 Buildroot系统中调试HDMI-RX的过程,包括抓图、修改EDID数据、编辑EDID等操作。首先,通过logcat和寄存器信息查询HDMI-RX的状态,使用v4l2-ctl工具进行测试和修改EDID。

501846585_QQAndroid_java 2685

Java最全Java并发关键字-final,Redis高频面试笔记

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。请转发本文支持一下本文已被。

2401_84692141的博客 1063

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

HoRain云--Java final关键字核心解析

《Java final关键字详解》摘要 final是Java中表示"不可变"的关键字,可修饰类、方法和变量。修饰类时,该类不可被继承(如String类);修饰方法时,方法不可被子类重写;修饰变量时,变量只能赋值一次成为常量。对于引用类型变量,final保证的是引用地址不变而非对象内容不变。 使用final能提升代码安全性、清晰性和性能优化。本文通过分类说明和实例解析,系统介绍了final关键字的用法与价值,帮助开发者理解这一重要特性。

2401_86544677的博客 919

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java异常、final关键字和常量

如果Java内置的异常类无法满足需求,可以自定义异常类。自定义异常类通常继承自Exception类(受检查异常)或类(非受检查异常)。在Java中,常量通常是通过final关键字修饰的变量来实现的。final表示该变量的值一旦被初始化后,就不能再被修改。final 数据类型 常量名 = 常量值;

moonlight0512的博客 898

Java-final关键字详解

final。

2301_80652249的博客 590

JavaSE总结 - final关键字

零基础学Java,肝了bilibili的6百多集JavaSE教程传送门的学习笔记!!! 下面博客分为两部分: ① final关键字要点(想快速了解final关键字的小伙伴选择) ② 案例代码,对①中的知识点进行解释(需要再花费8分钟学习的小伙伴选择) 一、final关键字要点 1、final是Java语言中的一个关键字。 2、final表示最终的,不可变的。 3、final可以修饰变量以及方法,还有类等。 4、final修饰的变量? final修饰的变量只能赋一次值。 final修饰的引用.

clzZ2的博客 1184

Java中的关键字final、finally与finalize方法

Java中有很多关键字,这些关键字中的final、finally和finalize()方法长相十分相似,其实他们仨并没什么特殊的联系,只是单纯的像,本文就简单介绍下他们仨各自的用途。 final final关键字可用于非抽象类、非抽象类的成员方法(构造方法除外)、非抽象类中的变量、参数 用于类:表示该类不可被继承,类中的方法默认都是被final修饰的方法(例如String类) 用于方法:表示该方...

LarsCheng's Blog 1616

Java中final的关键字-快速理解掌握

Java中final的关键字,主要的作用就是告知编译器我这边有一块数据是恒定不变的;比如: 编写一个永不改变的编译时常量 或者在运行时被初始化的值,而你不希望这个值被改变 final关键字的作用: 修饰变量:被他修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。 java允许在参数列表中以声明的方式将参数指明为final,这就意味着无法在方法中更改参数引用所指向的对象。可以读参数,但却无法修改参数,这一特性主要用来想匿名内部类传递数据。 final int MAX_SPEED = 120.

LSFZ88888的博客 172

Java中finall 关键字_【Java】final关键字

1.final数据(1)基本类型 数值恒定不变(2)对象引用 引用恒定不变,初始化的时候指向一个对象后,无法改变为另一个对象,但是对象本身可以修改2.final方法可以把方法锁定,不能被任何继承类重写,保持不变。3.final类不能再有子类,禁止继承。4.final参数无法在方法中更改参数所引用所指向的对象。5.空白final被声明为final但未给定初值的域,在使用前必须初始...

weixin_36104309的博客 303

final关键字

10分钟快速上手fianl的用法

weixin_63055547的博客 184

final关键字快速入门

final关键字 final 可以修饰类、属性、方法、和局部变量 应用场景: 当不希望类被继承 当不希望父类的某个方法被子类覆盖/重写 当不希望类的某个属性的值被修改 当不希望某个局部变量被修改 final细节: final修饰的属性又叫常量,一般用(大写)XX_XX_XX 来命名 final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置(选择一个位置赋初值即可): 定义时: public final double TAX_RATE=0.01; 在构造器中赋值

fat_house_cat的博客 168

匿名类 接口 final关键字

匿名类 接口 final关键字 今天学习了匿名类 接口 finall关键字的相关知识,做一个总结。 匿名类: 1.没有名字的子类对象。 2.匿名类中,必须要包含的是类型中抽象方法的实现。 3.匿名类是一次性的。 几点区别: 1.抽象类里有构造方法,抽象类不能直接创建对象。普通类有构造方法,普通类能创建对象。 2.抽象类能承载抽象方法,普通类不能承载抽象方法。 3.抽象类可以有普通属性,普通类有普通属性。 ** 1.方法重写过程不能改变返回值,不能改变方法名,不能改变参数列表,能改变访问控制(可以从小往大改

qq_45879986的博客 202

关键字final static

final final关键字可以修饰 类,方法,变量 final 修饰 的类不能被集成,也就没有子类 final可以修饰方法(除了构造方法)可以被集成,但是不能被重写 final 修饰变量一旦复制不能修改 static static 可以修饰内部类,成为静态内部类 static 可以修饰变量成为静态变量,又叫全局变量,不依赖类的对象就可通过类名直接调用,存在方法区,仅仅是对象的引用存在...

qq_32196593的博客 145

Java 关键字

Java 自己保留的一些单词,作为特殊功能的。关键字不能用来作为类名或者是变量名称,否则报错。说明This 关键字可以出现在成员方法、构造器中,代表当前对象的地址。This 关键字一般用来访问当前对象的成员变量、成员方法。thissuper使用总结场景说明访问本类成员this.成员变量访问本类成员方法this.成员方法(…)访问本类构造器this(…)访问父类成员变量super.成员变量访问父类成员方法super.成员方法(…)访问父类构造器super(…)注意事项子类通过this...

weixin_72525373的博客 1395
上一篇: 读完 RocketMQ 源码,我学会了如何优雅的创建线程
下一篇: 每天花费3小时进击阿里首席官都推荐的SpringBoot笔记
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值