Java 中关键词 final,看这篇文章就够了 (干货)

Java Final 关键词 Java的final关键字用于类、方法和变量,具有不可变特性:final类禁止继承(如String类);final方法禁止重写;final变量初始化后不可重新赋值(基本类型值不可变,引用类型引用不可变但对象内容可变)。数组作为对象,final仅限制引用不可变,元素可修改。通过反射可修改final修饰的String内部值(但不推荐)。final能提升性能(JIT内联优化)和安全性(防止篡改),需注意正确初始化时机(直接/构造器/静态块)。引用不可变性与对象内容可变性是非传递性的,要完全不可变需使用不可变集合。 阅读详情

Final 关键词

订阅原文学习更多 Java 知识

https://github.com/TheTutorials/Java

Java 中的关键词 final 可以理解为最终,不可变的意思。下面介绍 final 的使用场景。

  • 修饰普通变量

    当一个变量使用 final 声明时。它的值不能被二次修改

    final double PI = 3.1415927;
    /* cannot assign a value to final variable PI */
    PI = 3.1415928;
    

    如果 final 声明变量时候没有初始化,则无法使用该变量(所以必须先初始化)

    final double PI;
    /* variable PI might not have been initialized */
    double area = PI * 5 * 5;
    
  • 修饰对象

    当一个引用类型的变量使用 final 修饰时。不能重新指向另外的对象,但是可以修改对象的内容

    final List<Integer> list = new ArrayList<>();
    /* 可以修改对象的内容 */
    list.add(1);
    list.add(2);
    list.add(3);
    
    /* output: [1, 2, 3] */
    System.out.println(list);
    
    /* cannot assign a value to final variable list */
    list = new ArrayList<>();
    
  • 修饰类

    当 final 修饰类时,该类无法被当作父类继承,所以如果不想让类被继承只需要使用 final 修饰即可。比如 Integer 和 String 类

    final class A {
        /* do something */
    }
    
    /* cannot inherit from final A */
    class B extends A {
        /* do something */
    }
    
  • 修饰方法

    当 final 修饰父类方法时,子类无法覆盖(重写)父类方法

    class A {
        public final void method() {
            /* do something */
        }
    }
    
    class B extends A {
        /* B cannot override method() in A overridden method is final*/
        public void method() {
            /* do something */
        }
    }
    
  • 修饰方法参数

    当 final 修饰方法参数时,不能在方法体内修改参数的值

    public void methodWithFinalArguments(final int x) {
        /* final parameter x may not be assigned */
        x = 1;
    }
    

reference

1.https://www.baeldung.com/java-final
2.https://stackoverflow.com/questions/15655012/how-does-the-final-keyword-in-java-work-i-can-still-modify-an-object
3.https://www.geeksforgeeks.org/final-keyword-java/

Linux ELF文件解析:从file到readelf的完整工具链指南 ELF(可执行与可链接格式)是Linux系统中二进制文件的标准格式,定义了程序加载、内存布局和元数据组织方式。其核心原理在于通过程序头表描述执行视图、节区头表描述链接视图,实现代码与数据的结构化存储。这一格式的技术价值在于为程序调试、安全审计和性能优化提供了底层支持,尤其在动态链接、符号解析和内存保护机制中发挥关键作用。在应用场景上,系统管理员依赖ELF分析工具解决库依赖问题,安全研究员通过检查安全属性评估漏洞风险,开发者则利用反汇编进行代码调试。本文聚焦于file、readelf、objdump等工具链的 阅读详情

相关推荐

电路课设-音响分频器电路设计

(一)题目简介 1.一阶分频器电路设计 假定高音和低音扬声器均等效为 16 欧姆电阻,设计如图 2 的简单分频器电 路,要求高低频分界(两个滤波器的截止频率)为 5kHz。 1) 写出高音扬声器和低音扬声器电压对于 vs 的传递函数,确定电路中电 容 C 和电感 L 的元件值;2)利用 AC 频率扫描分析求出两个扬声器电压的频率响应曲线,验证计算 结果。用包含高低频成分的电压 vs 激励进行测量验证。 3)计算并利用 EWB 仿真证明从 vs 看进去的阻抗为一常数 16 欧姆。

weixin_53507617的博客 1万+

java final

1、当用final去修饰一个类的时候,表示这个类不能被继承 public final class FinalClass { private int a = 10; private final int b = 20; private void fun() { } private final void fun1() { } } ...

yihuangol的博客 189

因果推断--PSM的原理和应用(二)

上一篇介绍了DID,本文介绍和DID可一起搭配使用的一种因果推断方法PSM。在正式介绍PSM之前,先来简单回顾一下为什么需要因果推断以及如何做因果推断。我们都知道相关非因果,比起相关我们更希望知道两个事件之间的因果关系,有了确切的因果关系,才能知道对A如何操作才能引起B的变化。解决因果推断问题,目前主要有两种框架,Rubin虚拟事实模型和Pearl因果图模型。站在数据分析的角度上,Rubin虚拟事实模型更容易理解,其核心思想是寻找恰当的对照组。

baidu_26137595的博客 1万+

Final关键字

Final:含义:final是Java中的一个保留关键字,它可以标记在成员变量、方法、类以及本地变量上。一旦我们将某个对象声明为了final的,那么我们将不能再改变这个对象的引用了。如果我们尝试将被修饰为final的对象重新赋值,编译器就会报错。 修饰变量: final修饰在成员变量或者局部变量上,那么我们可以称这个变量是final变量,这可能是我们用到最多的地方,例:常量(虽然现在建议使用枚举类来代替常量)。如果我们将被final修饰的变量重新赋值,编译器就 会报出如图...

weixin_51980491的博客 553

舵机操作手册

微型伺服马达原理与控制(中鸣) 1、微型伺服马达内部结构一个微型伺服马达内部包括了一个小型直流马达;一组变速齿轮组;一个反馈可调电位器;及一块电子控制板。其中,高速转动的直流马达提供了原始动力,带动变速(减速)齿轮组,使之产生高扭力的输出,齿轮组的变速比愈大,伺服马达的输出扭力也愈大,也就是说越能承受更大的重量,但转动的速度也愈低。 2、微行伺服马达的工作原理一个微型伺服马达是一个典型闭环反馈系统,其原理可由下图表示: 减速齿轮组由马达驱动,其终端(输出端)带动一个线性的比例电位器作位置检测,该电位器把

HEIMENGER的博客 3137

SolidWorks速成教程P1——简介及基础操作

SolidWorks教程P1——简介及基础操作

嵌入式阿齐Archie 2万+

final关键字详解-Java

摘要 final关键字的作用是在不同的场合下限制扩展。本文旨在详细描述Java关键字final的使用。下文将主要介绍class,method以及variable的不同使用场景。 类(class) 当用final修饰class时,此类将不能被继承。Java核心库String类,就是一个final class。其它类不能继承String类。 public final class String implements java.io.Serializable, Comparable<String&gt

SUMUP 1910

10分钟搞定manim安装与vscode配置

manim安装与vscode配置

帅帅de三叔 3413

java常见面试题含答案(第七期)

19、final的用法? 1.修饰变量时:变量的值在不可以被修改。 注意:在被修饰的对象是基本数据类型时,被修饰对象的值不能被修改。 在修饰的对象是引用数据类型时,对象的引用地址不会被改变,但是对象的值可以改变。 @Test public void test04(){ final int a=1; a=2;//Cannot assign a value to final variable 'a' } 2.修饰方法参数时:内修饰的参数不能被修改。 @T

weixin_45969711的博客 483

29、机器人动力学中的欧拉 - 拉格朗日与哈密顿力学

本文深入探讨了机器人动力学中的欧拉-拉格朗日与哈密顿力学框架,涵盖向量流形上的辛结构、哈密顿方程的几何代数表述、泊松括号与积分不变量等核心概念。文章详细推导了机电系统中拉格朗日量与哈密顿量的构建方法,并结合牛顿-欧拉算法给出了局部哈密顿量和动量导数的迭代计算流程,适用于多关节机器人的动力学建模与控制设计。通过应用案例展示了理论在双关节机器人手臂中的实际运用,最后展望了其在优化控制、鲁棒性提升及智能融合方向的潜力。

perl8的博客 129

YOLOv12涨点改进 | 独家创新-注意力改进篇 | ECCV 2024 | YOLOv12引入AgentAttention代理注意力模块,兼顾 Softmax 和线性注意力优点,提高检测精度

🔥本文给大家介绍使用Agent Attention模块改进YOLOv12网络模型。其主要作用是通过引入高效的代理token来减少计算复杂度,同时保留全局上下文建模能力。相比传统的Softmax注意力,Agent Attention通过代理token聚合并广播信息,从而降低了模型在处理高分辨率图像时的计算负担,并显著提高了推理速度。其优势在于保持了目标检测中的全局信息处理能力,同时加速了生成过程,特别是在高分辨率场景下,可以提高检测精度、减少内存消耗,并提升处理速度。

Ai缝合怪、助力小伙伴高效发论文 155

匿名内部类访问的局部变量为什么必须为final

胖胖http://ciaoshen.com129 人赞同了该回答喜欢看生肉的同学就不用看我的回答了,直接看R大的三篇回答,尤其是第一篇后面的回复部分。我只是试着用大白话做个简单的整理,希望能更容易理解一点。关于对象与闭包的关系的一个有趣小故事 (这篇的精华在后面的回复,小故事可以跳过)JVM的规范中允许编程语言语义中创建闭包(closure)吗? - RednaxelaFX 的回答为什么Java闭...

起风了 9313

国密SSL通信的调试技巧

前面写了几篇国密开发相关的文章:解读国密非对称加密算法SM2啥?双证书?详解国密SM2的加密和解密详解国密SSL ECC_SM4_SM3套件详解国密SM2的数字签名这篇文章来聊一聊国密S...

云水木石 3206

java中final关键词

在Java中,final关键字是一个非常重要的修饰符,它可以应用于类、方法和变量,用来表示不可更改性或最终状态。一旦你将引用声明为final,你将不能改变这个引用了。

2301_79440702的博客 897

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java中final关键词与常量

字面量常量(Literal Constant):代码中直接写出来的固定值,例如 3.14、“Hello”。符号常量(Named Constant):通过关键字final声明的变量,赋值后不能修改。

2501_90434822的博客 1060

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java中的Static、final、Static final各种用法

前言 对Static、final、Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇博客文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从容的回答… static 加载:static在类加载时初始化(加载)完成 含义:Static意为静态的,但凡被static 修饰说明属于类,不属于类的对象。 可修饰:Static 可以修饰 内部类、方...

宜春 4万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java关键词final

当final作用于类的成员变量时,成员变量必须再定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。8、方法中作为参数的变量(无论是基本数据类型的变量还是引用数据类型的变量),在方法中被修改时,无法影响方法外该变量的值,除非重新赋值。对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便。final类的成员变量可以根据需要设为final,但是final类中的所有。只有在想确定禁止该方法在子类中被覆盖的情况下,才将方法设置为final。

皮克托先生的博客才对 200

Java学习之关键词final

final关键词主要可以用来变量的声明、final方法以及final类,下面逐个介绍。 final变量 final定义的变量,一旦被设定,就不可以再改变变量的值,同时必须在申明的时对其进行赋值操作(有些情况申明后赋值也可以,但是为培养良好的编程习惯,声明的时候赋值最好)。 final可以修饰一般的常量,同时也可以修饰对象引用,由于数组也可以被看作对象来引用,所以final也可以修饰数组。...

秋水惊鸿的博客 310

解读Java关键词—final

定义:被final修饰的字段在构造器中一旦被初始化完成,并且构造器没有把“this”的引用传递出去,那么在其他线程中就能看见final字段的值。k的值由随机数对象决定,所以不是所有的final修饰的字段都是编译期常量,只是k的值在被初始化后无法被更改。如果在构造函数中赋值,在无引用溢出下,构造函数是线程安全的,因此final字段也是线程安全。使用final方法的原因:确保在继承中使方法行为保持不变,并且不会被覆盖(设计考虑)。:一个类中的final域就可以做到根据对象而有所不同,却又保持其恒定不变的特性。

Javatutouhouduan的博客 743

【JAVA】关键词final的作用

关键词final的作用 final这个关键字,可以说在开发过程中经常遇到,为了更好的理解它,下面浅谈一下自己对final这个关键词的理解 【1】final关键字可以用来修饰变量 final修饰变量是我们用到最多的地方,被final修饰的变量,如果是基本数据类型的变量,则一旦被赋值后便不可更改。 如果是...

阳阳的博客 1万+

JAVA final关键词详解

Java中常常会见到一些修饰词,如public,private,但是final却很多人容易混淆,下面我们就详细解释以下final关键词。 final可以用来修饰类,方法,成员变量和参数。 一、final用来修饰类 当final用来修饰类时,则可表示这个类时则表示这个类不允许被继承。而且当final修饰类时,其内的方法会被隐式修饰为final方法。所以在final类内修饰方法为final是没有意义的...

qq_43081015的博客 232

final关键词特性

1、final使用 (1)final变量 final变量有成员变量或者是本地变量(方法内的局部变量),在类成员中final经常和static一起使用,作为类常量使用。其中类常量必须在声明时初始化,final成员常量可以在构造函数初始化。 public class Main { public static final int i; //报错,必须初始化 因为常量在常量池中就存在了,调用时不需要类的初始化,所以必须在声明时初始化 public static final int j; Ma

qq_40959750的博客 397

关于JAVA中final关键词的使用总结

final修饰类:表示该类不能被继承 final修饰方法:表示该方法不能被重写 final修饰基本数据类型:表示该变量只能被赋值一次 final修饰引用:表示该引用只有一次指向对象的机会 public static final 修饰的变量为常量 在一些什么情况下需要使用final? 当内部类需要引用外部类的局部变量或者是传入的参数时那么该变量必须被定义为final:防止该变量在内部类和外部类表现为两个变量的情况发生,防止内部类对引用的变量进行重定向。 public class...

PMPWDF的博客 249

【Java基础】关键词static 关键词final

关键词static static可以用来修饰类的成员变量(instance variable)和成员方法。 放在成员变量声明和成员方法定义前。静态变量和静态方法是属于类,而不是某个特定的对象。 静态变量: 一个静态变量永远只有一份存储空间,同一个类的多个对象共享一个静态变量。若一个静态变量的值被被一个对象修改,则该方法的所有实例化对象的该属性值改变,因为此静态变量只有一份存储空间。 静态变量可以直接通过类名访问,而非静态变量必须通过对象访问,但静态变量和静态方法也可以通过相应的对象访问,不过不提倡。 静

Ms.Lyq的博客 197

Java final变量、final方法、final类

一、final变量 咋们先看个,例子,再来解释为什么会这样! public class Main { public static void main(String[] args) { // write your code her final int a[]=new int[2]; final int b=1; a[0]=1; ...

Cheney的博客 1317

【Java】浅谈final关键词

final: final 可以修饰类、方法、变量。当final 修饰类时,表明该类不可被继承;修饰方法时,表明该方法不可被重写;修饰变量时表明该变量不可被修改。 final关键字的基本用法 在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。 1、修饰类  当用final去修饰一个类的时候,表示这...

JockLiu的博客 173
上一篇: Java 超级详细的 String 类讲解 (干活)
下一篇: Java 中使用下划线分隔超大数字(干货)
ishellhub
博客等级 码龄9年 102粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值