Java中的final关键字,你清楚吗?
创始人
2024-03-23 19:30:55
0

 

前言

在学习Java基础阶段应该都认识关键字 final,在声明常量和匿名内部类时都会用到它。我们最熟悉的 String 类就是 final类,如果经常查看API源码,肯定还会遇到其他 final类。本篇就来深入了解一下关键字 final,加深对它的运用。

概览

可用来做什么

  • 修饰变量

这个很常见,Java中在声明常量时,就会用 final 来修饰。被 final 修饰的变量只能赋值一次,之后不能再被修改。

final int a = 1;
a = 4; // 编译报错
复制代码

有一点值得注意,这里是说只能赋值一次,并不是说一定要在声明变量时直接初始化,下面语句也是没有问题的

final int a;
if (foo()) {a = 3;
} else {a = 4;
}
复制代码

特别说明:

一个final变量,若是基本数据类型,则其一旦在初始化之后便不能更改;若是引用类型,则在对其初始化之后便不能让其指向另一个对象。

  • 修饰方法

某些业务场景下,一个方法不需要子类来重写,就可以用 final 来修饰该方法。另一方面,java虚拟机遇到 final 方法会直接简便处理,因为虚拟机清除 final 方法不会被子类继承,可以说对性能上有所优化。

  • 修饰类

一个类不想被继承,就可以使用 final 来修饰。

final变量,普通变量和static 变量

  • 普通变量

正常声明使用的变量,如 int a = 10

  • static变量

由关键字 static 修饰变量,在java中直接通过类名调用静态变量,如 static string b = "琪琪"

  • final 变量

最常见的 final 变量就是声明常量,其他场景倒是不多见。

final类型参数

void changeValue(final int i);
复制代码

如上面方法声明中,参数由 final 关键字修饰,在java中参数传递采用的是值传递,对于基本类型的变量,相当于直接将变量进行了拷贝。即使没有final修饰的情况,在方法内部改变了变量值也不会影响方法外i。

使用final的好处

  • 在多线程条件下,会有很大的优势。如果共享数据都是不可变的(final),可以省去构造时的多线程同步。

  • final类和方法能提升性能,虚拟机知道它们不会被继承或者重写,就可以做一些优化。

  • final变量能提升可读性,无论全局变量还是局部变量,加上final修饰,变量的值不会再改变,无疑会大大增加可读性。

 

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...