java final 变量 好处_深入理解Java中的final关键字
Java中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例。final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的。
final关键字的含义?
final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。
什么是final变量?
凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。final变量经常和static关键字一起使用,作为常量。
final变量是只读的。
什么是final方法?
final也可以声明方法。方法前面加上final关键字,代表这个方法不可以被子类的方法重写。如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。
什么是final类?
使用final来修饰的类叫作final类。final类通常功能是完整的,它们不能被继承。Java中有许多类是final的,譬如String, Interger以及其他包装类。
final关键字的好处
下面总结了一些使用final关键字的好处
final关键字提高了性能。JVM和Java应用都会缓存final变量。
final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
使用final关键字,JVM会对方法、变量及类进行优化。
不可变类
创建不可变类要使用final关键字。不可变类是指它的对象一旦被创建了就不能被更改了。String是不可变类的代表。不可变类有很多好处,譬如它们的对象是只读的,可以在多线程环境下安全的共享,不用额外的同步开销等等。
java final 变量 好处_深入理解Java中的final关键字相关推荐
- java虚拟机编译顺序_深入理解Java虚拟机(程序编译与代码优化)
文章首发于微信公众号:BaronTalk,欢迎关注! 对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就 ...
- 深入理解Java虚拟机知乎_深入理解Java虚拟机(类文件结构)
深入理解Java虚拟机(类文件结构) 欢迎关注微信公众号:BaronTalk,获取更多精彩好文! 之前在阅读 ASM 文档时,对于已编译类的结构.方法描述符.访问标志.ACC_PUBLIC.ACC_P ...
- java 接口和虚构_深入理解Java的接口和抽象类
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...
- Java虚拟机不能满足_深入理解Java虚拟机--读书笔记1/3
<深入理解Java虚拟机-JVM高级特性与最佳实践> Chap 2 Java内存区域与内存溢出异常 1.Java运行时数据区域 A.程序计数器:当前线程所执行字节码的行号指示器,线程私有( ...
- java抽象类的属性_深入理解Java抽象类
基础部分内容差不多讲解完了,今天开始进入Java提高篇部分,这部分内容会比之前的内容复杂很多,希望大家做好心理准备,看不懂的部分可以多看两遍,仍不理解的部分那一定是我讲的不够生动,记得留言提醒我. 好 ...
- java调用子系统代码_深入理解JAVA虚拟机-Idea远程执行本地Java代码 - Java 技术驿站-Java 技术驿站...
今天在看深入理解JAVA虚拟机的9.3节,作者实现了一个远程执行功能.这个功能可以在远程服务器中临时执行一段程序代码,而去不依赖jdk版本,不改变原有服务端程序的部署,不依赖任何第三方库,不入侵原有的 ...
- java虚引用作用_深入理解Java中的引用(二)——强软弱虚引用
深入理解Java中的引用(二)--强软弱虚引用 在上一篇文章中介绍了Java的Reference类,本篇文章介绍他的四个子类:强引用.软引用.弱引用.虚引用. 强引用(StrongReference) ...
- java的弱引用_深入理解Java中的弱引用
不久之前,我面试了一些求职Java高级开发工程师的应聘者.我常常会面试他们说,"你能给我介绍一些Java中得弱引用吗?",如果面试者这样说,"嗯,是不是垃圾回收有关的?& ...
- java byte 判断相等_深入理解Java装箱与拆箱
写给小白看的Java基础知识,阅读本文大概需要7分钟 Java中有8种基础数据类型,boolean,char,byte,short,int,long,float,double.从jdk5开始提供了自动 ...
最新文章
- 7天攻克运维瓶颈 玩转立体运维
- r读取shape文件可视化_【R】提取 PCA 结果并利用 ggplot2 进行可视化
- Windows下的常用的DOS命令
- 前端学习(3064):vue+element今日头条管理-展示频道处理
- 雷军发“玄妙”知识微博:暗示小米MIX4 将采用42W快充?
- android style theme
- ❤️《大前端—模块化》
- Python进程池使用
- BP神经网络算法基本原理,bp神经网络的应用案例
- 菜鸟第一次使用pycharm+mysql+django运行项目
- 李彦宏:离破产永远只有30天
- 10bit视频编码——特性及全面播放方法介绍
- 计算机显示器使用的扫描方式,平板扫描仪怎么用 平板扫描仪使用方法【详解】...
- A053_项目部署_Linux介绍_CentOS
- faillock与ldap策略共存问题
- CISCO数据中心虚拟化之VSS技术和配置
- 网络安全笔记第四天day4(kali基本操作)
- 安卓在将来的发展趋势
- 洞悉物联网发展1000问之为什么新零售不仅仅是无人零售?
- 不同局域网ubuntu如何进行ssh穿透登录
热门文章
- 【转】MS-DOS下怎样使用解压缩共具
- 18 ubuntu 远程原生_CNCF公布中国云原生调查报告:49%使用容器技术,Kubernetes 应用率达 72%...
- 萌宠主题页面设计灵感
- 潮流设计师创作灵感|是时候设计一下蒸汽波海报了!
- 设计灵感|电商版面首页界面设计案例
- 买买买!!!电商促销必备的气氛PSD分层海报
- 色彩艺术海报PSD模板 | 用色彩挑动你的情趣
- UI设计中的黄金分割率,实用案例适合临摹学习
- 可临摹素材,分层可编辑一步一步教你,肯定能把表单做好
- LeetCode-----反转链表