当前位置: 首页 > news >正文

Java final关键字

    可以修饰类、属性、方法和局部变量。

何时使用:

1、不希望某个类被继承,用final修饰该类。

2、不希望父类的某个方法被子类覆盖/重写,用final修饰该方法。

3、不希望类的某个属性的值被修改,用final修饰该属性。

4、不希望某个局部变量被改变,用final修饰。

Java中final和static修饰的变量是在什么时候赋值的?_程序IT圈的博客-CSDN博客

链接中的总结单拎出来:

①单独用final修饰的变量也有可能在字节码找到对应的ConstantValue属性,但是会被JVM忽略掉。

②final修饰的实例属性,在实例创建的时候才会赋值。

③static修饰的类属性,在类加载的准备阶段赋初值,初始化阶段赋值。

④static+final修饰的String类型或者基本类型常量,JVM规范建议在初始化阶段赋值,但是HotSpot VM直接在准备阶段就赋值了。

⑥static+final修饰的其他引用类型常量,赋值步骤和第二点的流程是一样的。?

细节:

1、局部变量使用final修饰,它的值不允许改变,即:

     如果是基本数据类型,则不允许值改变。

     如果是引用类型,它的值就是地址,只要地址不变就行,指向的对象自身属性可以改变。

2、final修饰的属性也叫常量,一般用XX_XX_XX来命名。

3、final修饰的属性定义时必须赋初值,以后不可修改,可在以下时刻赋初值:

    ①定义时。

    ②构造器中。

    ③代码块中。

4、若final修饰的属性是静态的(static) ,则只能在以下赋初值,不能在构造器赋初值。

    ①定义时。

        定义时直接赋值,赋值操作将会在类加载的准备阶段就赋值完毕。

            好处:可以让代码更加简洁

            坏处:如果赋值的操作比较耗时,就会影响类的加载速度。

    ②代码块。(前提是不能在定义时赋值)

         常量的初始化被延迟到静态代码块执行时,即初始化阶段。

             可以在需要复杂操作时实现更好的控制,而且可以在静态代码块中捕获异常。

5、final不能修饰构造方法。

6、final + static往往搭配使用,效率高,不会导致类加载,底层编译器做了优化。

    

7、方法形参也可以使用final修饰。

http://www.lryc.cn/news/357185.html

相关文章:

  • 半个月获邀请函|在读博士公派新加坡南洋理工大学联合培养
  • c++移动构造和赋值的样例
  • 静态测试---基于WorkList的活跃变量分析
  • Oracle 证书的重要性
  • 【Go专家编程——并发控制——Mutex】
  • SRE视角下的DevOps构建之道
  • 小白如何如何理解滑动窗口最大值问题python
  • Linux--进程间通信(2)(有名管道)
  • window自动启动bat文件
  • 2024年蓝桥杯Web开发【大赛大纲】15届
  • 【vue-cli搭建vue项目的过程2.x】
  • Android 生成正式版密钥库 KeyStore
  • POLARDB:新零售用户MySQL上云最佳选择
  • PHP MySQL图解学习指南:开启Web开发新篇章
  • uniapp一些问题解决
  • 数字经济讲师培训师教授唐兴通谈新质生产力数字化转型高质量发展AI人工智能大模型大数据经信委大数据管理局
  • 关于APM32F407配置串口DMA收发没有数据的问题记录
  • 基于python实现的深度学习web多格式纠错系统
  • UE5文件操作
  • element plus 去掉select选择框的边框,并修改右侧图标
  • Ceph KernelFuse GetSet Quota
  • JVM学习-字节码指令集(二)
  • 解密网络流量监控:优化IT运维的利器
  • oracle 分区表常用语句(2)
  • Python函数式编程进阶:用函数实现设计模式
  • Ingress controller:Kubernetes 的瑞士军刀
  • uniapp tabBar app页面滚动闪屏的问题
  • 【计算机毕业设计】388微信小程序足球赛事及队伍管理系统
  • 监控易监测对象及指标之:华为FusionInsight Kafka服务全方位监控
  • Python装饰器的应用