阿里巴巴开发手册: 若是 static 成员变量,必须考虑是否为 final ?

简介: 阿里巴巴开发手册: 若是 static 成员变量,必须考虑是否为 final ?

阿里巴巴开发手册为啥推荐:若是 static 成员变量,必须考虑是否为 final ?



18. 【推荐】final 可以声明类、成员变量、方法、以及本地变量,下列情况使用 final 关键字: 
1. 不允许被继承的类,如:String 类。  
2. 不允许修改引用的域对象,如:POJO 类的域变量。  
3. 不允许被重写的方法,如:POJO 类的 setter 方法。  
4. 不允许运行过程中重新赋值的局部变量。  
5. 避免上下文重复使用一个变量,使用 final 描述可以强制重新定义一个变量,方便更好 地进行重构。

final


  • final类不能被继承,没有子类,final类中的方法默认是final的
  • final方法不能被子类的方法覆盖,但可以被继承
  • final成员变量表示常量,只能被赋值一次,赋值后不能再被改变
  • final不能用于修饰构造方法
  • private不能被子类方法覆盖,private类型的方法默认是final类型的


static


static表全局静态的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块。

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量。


static和final一起使用


static final用来修饰成员变量和成员方法,可以理解为“全局变量”。

  • 对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
  • 对于方法,表示不可覆盖,并且可以通过类名直接访问。

对于被static和final修饰过的实例常量,实例本身不能再改变了,但对于一些容器类型(比如,ArrayList、HashMap)的实例变量,不可以改变容器变量本身,但可以修改容器中存放的对象


例子


static int a=1;
static final b=1;

这里a和b的区别在于,a在程序里可以被重新赋值为2或3或等等的整数,而b在程序里不能被重新赋值,b永远都为1,也就是说b是一个常量。


final int c=1;
static final b=1;


这里c和b的区别在于,b存放在静态空间,不会在程序运行时被释放,它永远占着内存直到程序终止,而c在程序用完它而不会再用到它的时候就会被自动释放,不再占用内存。

当一个常数或字符串我们需要在程序里反复反复使用的时候,我们就可以把它定义为static final,这样内存就不用重复的申请和释放空间。

相关文章
|
应用服务中间件 数据安全/隐私保护 nginx
Gitlab----使用Docker方式安装部署Gitlab
Gitlab----使用Docker方式安装部署Gitlab
12649 1
Gitlab----使用Docker方式安装部署Gitlab
|
XML 算法 数据可视化
我的Neo4j探索之旅 - 安装Apoc插件以及JAVA集成(二)
我的Neo4j探索之旅 - 安装Apoc插件以及JAVA集成(二)
1256 0
|
移动开发 JavaScript Java
钉钉账号免登体系(SSO)接入指南
如果你正在规划一个社区型产品、论坛、博客、或其他开放性Web站点,需要在登录用户之间形成互动性;或者正在对接政府机构、酒店大堂、药房门店等,需要访客先登记后进入;抑或正在设计企业内部系统,不想对接繁琐的iDaaS,但又需要记录和识别访问者的身份,那么,钉钉账号免登或许是你想要的东西,这篇文章应该正好也可以帮到你;本文尽量从初级开发者的角度来讲讲,钉钉账号免登体系的接入方法。
3577 0
钉钉账号免登体系(SSO)接入指南
|
Java 关系型数据库 MySQL
一键安装java web环境打包集成,集成tomcat,mysql,jdk,java ,加上客户端cefpython,实现桌面web应用。
一键安装java web环境打包集成,集成tomcat,mysql,jdk,java ,加上客户端cefpython,实现桌面web应用。
373 0
|
.NET 开发框架
使用 Advanced Installer 打包 一键安装Web应用程序
原文:使用 Advanced Installer 打包 一键安装Web应用程序 安装预览:      资源下载:   示例安装包 操作流程:   1.新建Asp.net Application。
1292 0