final的作用

final即最终的

  • 修饰类:表示该类不可被继承
  • 修饰方法:表示该方法不可以被子类重写,但可重载
  • 修饰变量:则该变量只能一次性赋值,即一旦赋值就不可以更改它的值
    • 修饰类变量:只能在静态初始化块中指定初始值或声明该类变量时指定初始值
    • 修饰成员变量:可以在非静态初始化块、声明该变量时或者构造器中指定初始值
    • 修饰局部变量:在定义时指定初始值或使用前指定值(都只能赋一次值 ,后边不能再更改)
  • 修饰基本类型数据和引用类型数据
    • 如果是基本数据类型的变量,则其数值一旦在初始化之后就不能更改
    • 如果是引用类型变量,则在对其初始化之后便不能再让其指向另一个对象。但是引用的值是可变的。即被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可变的。
    • 1
      2
      3
      final int[] arr={1,2,3};
      arr[1]=10;//合法
      arr = new int[]{12};//非法,编译报错:无法将值赋给final变量
  • 为什么局部内部类和匿名内部类只能访问局部final变量

   内部类和外部类处于同一级别,不会因为外部类方法的执行结束而销毁,外部类方法结束后其中的局部变量也就销毁了,但内部类中可能还在使用这个变量,这样就造成内部类对象访问一个不存在的变量。Java通过将外部类中的变量拷贝到内部类中使用,这样即使外部类中变量销毁内部类也还能访问,然后通过final来保证变量的一致性。

posted @   程长新  阅读(99)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示