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

Java中的static与final关键字

一、static关键字

static修饰位置表示含义
变量表示这是一个类变量,类加载时分配在堆中
方法静态方法,不依赖于对象可直接通过类标识访问
代码块静态代码块,只在类加载初始化阶段时执行一次
内部类静态嵌套类,表示只是放在外部类的文件里,其他的和普通类没区别

二、final关键字

final为不可变修饰符,通常我们希望某个元素是固定状态的不可修改的,就会用final关键字去修饰

final修饰位置表示含义例子
表示这个类是不可被继承的String类
类变量表示这个类变量在声明时就必须初始化
并且初始化完成后就不可变了
Double.MAX_VALUE
成员变量表示这个成员变量必须在对象创建完成前被初始化,
并且初始化完成后就不可变了
类加载器的parent变量
实例方法表示这是一个非虚方法,子类不可重写ClassLoader的defineClass()方法

final的好处

1、final 关键字,提高了性能,JVM会缓存 final 变量。

2、final 变量,可以安全的在多线程环境下进行共享,而不需要额外的同步开销。

总结

1、final 关键字可以用于修饰类、类变量、成员变量以及方法。

2、final 成员变量,必须在声明的时初始化或者在构造器中初始化,否则报编译错误。

3、final 变量不能再次赋值(引用类型指向的对象中的数据还是可以修改的);final 方法不能被重写;final 类不能被继承。

4、在匿名类中声明的变量都必须是 final 变量。

5、接口中声明的所有变量本身是 final 的。

6、修饰类时final 和 abstract 这两个关键字是反相关的,final 类就不可能是 abstract 的。

参考文章:java final 详解

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

相关文章:

  • 开学新装备 - 学生党是否该入手 MacBook
  • 【前端技巧】ESLint忽略检查行和文件
  • 单片机学习笔记之点阵(8x8)
  • 我一个普通程序员,光靠GitHub打赏就年入70万,
  • 剖析Spring MVC如何将请求映射到Controller
  • 设计模式之美-工厂模式
  • A Star算法最通俗易懂的一个版本
  • JavaWeb--ListenerAjaxaxiosjson
  • NoneBot2,基于Python的聊天机器人
  • java反射机制及其详解
  • Leetcode—环形链表
  • 蓝牙耳机哪个戴的最舒服?久戴不累的蓝牙耳机推荐
  • 25k的Java开发常问的AQS问题有哪些?
  • Grafana 监控面板绘制流程
  • 一句话设计模式5:责任链模式
  • 保姆级使用PyTorch训练与评估自己的EVA网络教程
  • Java--JMH--性能测试--测试软件运行效率/时间--StopWatch
  • JavaScript Array(数组)对象
  • 干货 | 电容在电路35个基本常识
  • 日读300篇文献的技巧
  • C++核心编程
  • SpringMVC程序开发
  • 多版本并发控制MVCC
  • JavaScript Date(日期)对象
  • 【Python】AES加解密代码,文章还有加密串等你来解密,等你来挑战
  • 代码随想录【Day34】| 1005. K 次取反后最大化的数组和、134. 加油站、135. 分发糖果
  • Java性能调优杀手锏JMH
  • 实现excle表上传生成echarts图
  • python代码如何打包
  • MyBatis学习笔记(十二) —— MyBatis的逆向工程