千家信息网

如何使用Java并发之inal关键字

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"如何使用Java并发之inal关键字",在日常操作中,相信很多人在如何使用Java并发之inal关键字问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如
千家信息网最后更新 2026年11月02日如何使用Java并发之inal关键字

这篇文章主要介绍"如何使用Java并发之inal关键字",在日常操作中,相信很多人在如何使用Java并发之inal关键字问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何使用Java并发之inal关键字"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、final使用场景

final可以稀释变量,方法和类,用于便是修饰的内容一旦赋值之后不会再被改变,比如string类就是一个final类型的类。

二、final修饰变量

在Java中变量可以分为成员变量和局部变量。

成员变量

通常每个类中成员变量可以分为类变量(static修饰的变量)以及实例变量针对这两种类型的变量赋初始值的时机是不同的。

类变量可以再声明变量的时候直接赋初始值或者在静态代码块中给类变量赋初始值;而实例变量可以在声明变量的时候给实例变量赋初始值,在非静态初始化块中以及构造器中赋初始值。

类变量有两个时机赋初始值,而实例变量可以有三个时机赋初始值。当final变量未初始化时系统不会进行隐式初始化,会出现报错。


将这几种情况归纳整理一下:

类变量:必须要在静态初始化块中指定初始值或者声明该类变量时指定初始值,而且只能在这两个地方之一警醒指定;

实例变量:必须要在非静态初始化块,声明该实例变量或者在构造器中指定初始值,而且只能在这三个地方警醒指定。

局部变量

final局部变量有程序员进行显示初始化,如果final局部变量已经进行了初始化则后面就不能再次进行更改,如果final变量未进行初始化,可以进行赋值,当且仅有一次赋值,一旦赋值之后再次赋值就会出错。

基本数据类型和引用数据类型

final修饰的基本数据类型和引用类型有区别吗?

通过上面的例子我们已经看出来,如果final修饰的是一个基本数据类型的数据,一旦赋值后就不能再次更改,那么,如果final修饰的是引用数据类型?这个引用的对象能够改变吗?

package passtra;  public class FinalExample{  //在声明final实例成员变量时进行赋值  private final static Person person=new Person(25, 175);  public static void main(String[] args) {  //对final引用数据类型person进行更改  person.age=22;  System.err.println(person.toString());  }  static class Person{  private int age;  private int height;  public Person(int age, int height) {  super();  this.age = age;  this.height = height;  }  @Override  public String toString() {  return "Person [age=" + age + ", height=" + height + "]";  }  }  }

当我们对final修饰的应用数据类型变量person的属性改成22,是可以操作成功的。

通过代码可以看出,当final修饰基本数据类型时,不能对基本数据类型变量重新赋值,因此基本数据类型不能被改变,而对于引用数据类型,它仅仅保存的是一个引用,final只保证引用类型所引用的地址不会发生改变,即一直引用这个对象,但这个对象属性是可以改变的。

宏变量

利用final变量的不可更改性,在马祖下面三个条件时,该变量就会成为一个宏变量,即一个常量。

使用final修饰符修饰,在定义该final变量时就指定了初始值,该初始值在编译时就能够唯一指定。

注意:

当程序中其他地方使用该宏变量时,编译器会直接替换该变量的值。

三、final修饰方法

重写

当父类的方法被final修饰的时候,子类不能重写父类的该方法。你如在object中getClass()方法就是说final修饰的,我们就不能重写该方法,但是hasdhCode()不是被final修饰的,我们就可以重写hashCode()方法。

重载

package passtra;  public class FinalExample{  public final void test(){  }  //没有报错  public final void test(int i){  }  }

可以看出被final修饰的方法可以重载。

四、final修饰类

当一个类被final修饰时,表明该类不能被子类继承。

子类往往可以重写父类的方法和属性,会带来一定的安全隐患,因此当一个类不希望被继承是就可以用final修饰。

五、final在JDK中有哪些应用

final经常被用作不变类上,利用final的不可更改性。

不变类

不变类的意思是创建该类的实例后,该实例的实例变量时不可改变的。满足以下条件可以成为不变类:

  • 使用private和final修饰该类的成员变量;

  • 提供带参数的构造器用于初始化类的成员变量;

  • 仅为该类的成员变量提供getter方法,不提供setter方法,因为普通方法无法修改final修饰的成员变量;

  • 如果有必要就重写object的hashCode和equals方法应该保证用equals判断相同的两个对象其HashCode值也是相等的。

JDK中提供的八个包装类和String类都是不可变的,可以看看string的实现

private final char value[];

可以看出string的value就是final修饰的,上述其他几条性质也是吻合的。

到此,关于"如何使用Java并发之inal关键字"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

变量 类型 方法 数据 实例 成员 关键 关键字 对象 局部 静态 学习 三个 两个 再次 地方 子类 就是 属性 时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司 重生之互联网科技帝国 互联网和科技创新 互联网中国科技 互联网医疗科技 上海喔噻互联网科技 齐家互联网科技有限公司 甘肃拓世互联网科技有限公司 老年人脱离互联网科技的作文 新华互联网科技2019 广州慧亚互联网科技怎么样 花神(南京)互联网科技有限公司 坤平互联网科技 元气玛特互联网科技公司是外包吗 普陀区互联网教育科技管理办法 陕西九四连强互联网科技有限公司 福仕德教育科技互联网 美国五大互联网科技公司市值多少 知域互联网科技有限公司官网 株洲百竞科技的互联网营销顾问 北京路客互联网科技有限公司 喔噻互联网科技 卓越科技(互联网 ) 亿人帮互联网科技 成都仁贤领冠互联网科技有限公司 江苏南京365互联网科技 允成互联网科技有限公司融资 华夏恒生科技与互联网科技 互联网科技圈年度人物 上海互联网科技公司ppt
0