iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java中的Final关键字的用法介绍
  • 393
分享到

Java中的Final关键字的用法介绍

2023-06-16 08:06:11 393人浏览 独家记忆
摘要

这篇文章主要介绍“Java中的Final关键字的用法介绍”,在日常操作中,相信很多人在Java中的Final关键字的用法介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中的Final关键字的用法介绍

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

首先,先给出final关键字的三种使用场景,也就是修饰类,方法和变量

然后,深入分析final关键字主要注意的几个问题

最后,总结一下final关键字

OK,开始今天的文章

一、final关键字的基本使用

1、认识final关键字

final可以修饰类、方法、变量。那么分别是什么作用呢?

(1)修饰类:表示类不可被继承

(2)修饰方法:表示方法不可被覆盖

(3)修饰变量:表示变量一旦被赋值就不可以更改它的值。java中规定final修饰成员变量必须由程序员显示指定变量的值。

2、final关键字修饰类

final关键字修饰类表示这个类是不可被继承的,如何去验证呢?

3、final关键字修饰方法

final修饰的方法不能被重写。但是可以重载。下面给出了一个代码例子。主要注意的是:父类中private的方法,在子类中不能访问该方法,但是子类与父类private方法相同的方法名、形参列表和返回值的方法,不属于方法重写,只是定义了一个新的方法。

public class FinalClass{      public final void test(){}      public final void test(int i){} }

4、final关键字修饰变量

final关键字修饰变量,是比较麻烦的。但是我们只需要对其进行一个分类介绍就能理解清楚了。

(1)修饰成员变量

  • 如果final修饰的是类变量,只能在静态初始化块中指定初始值或者声明该类变量时指定初始值。

  • 如果final修饰的是成员变量,可以在非静态初始化块、声明该变量或者构造器中执行初始值。

(2)修饰局部变量

系统不会为局部变量进行初始化,局部变量必须由程序员显示初始化。因此使用final修饰局部变量时,即可以在定义时指定默认值(后面的代码不能对变量再赋值),也可以不指定默认值,而在后面的代码中对final变量赋初值(仅一次)。

下面使用代码去验证一下这两种情况

public class FinalVar {     final static int a = 0;//再声明的时候就需要赋值     public static void main(String[] args) {         final int localA;   //局部变量只声明没有初始化,不会报错,与final无关。         localA = 0;//在使用之前一定要赋值         //localA = 1;  但是不允许第二次赋值     } }

(3)修饰基本类型数据和引用类型数据

  • 如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;

  • 如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。但是引用的值是可变的。

修饰基本类型的数据,在上面的代码中基本上能够看出,下面主要是描述引用类型的变量

public class FinalReferenceTest{     public static void main(){         final int[] iArr={1,2,3,4};         iArr[2]=-3;//合法          iArr=null;//非法,对iArr不能重新赋值          final Person p = new Person(25);         p.setAge(24);//合法         p=null;//非法      }    }

二、final关键字需要注意的几个问题

1、final和static的区别

其实如果你看过我上一篇文章,基本上都能够很容易得区分开来。static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变。下面代码验证一下

public class FinalTest {     public static void main(String[] args)  {         AA aa1 = new AA();         AA aa2 = new AA();         System.out.println(aa1.i);         System.out.println(aa1.j);         System.out.println(aa2.i);         System.out.println(aa2.j);     } } //j值两个都一样,因为是static修饰的,全局只保留一份 //i值不一样,两个对象可能产生两个不同的值, class AA {     public final int i = (int) (Math.random()*100);     public static int j = (int) (Math.random()*100); } //结果是 65、23、67、23

2、为什么局部内部类和匿名内部类只能访问局部final变量?

为了解决这个问题,我们先要去使用代码去验证一下。

public class Test {     public static void main(String[] args)  {          }        //局部final变量a,b     public void test(final int b) {         final int a = 10;         //匿名内部类         new Thread(){             public void run() {                 System.out.println(a);                 System.out.println(b);             };         }.start();     } }

上段代码中,如果把变量a和b前面的任一个final去掉,这段代码都编译不过。

这段代码会被编译成两个class文件:Test.class和Test1.class。默认情况下,编译器会为匿名内部类和局部内部类起名为Outter1.class。

原因是为什么呢?这是因为test()方法里面的参数a和b,在运行时,main线程快要结束,但是thread还没有开始。因此需要有一种机制,在使得运行thread线程时候能够调用a和b的值,怎办呢?java采用了一种复制的机制,

也就说如果局部变量的值在编译期间就可以确定,则直接在匿名内部里面创建一个拷贝。如果局部变量的值无法在编译期间确定,则通过构造器传参的方式来对拷贝进行初始化赋值。

三、总结

final关键字主要用在三个地方:变量、方法、类。

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

  2. 当用final修饰一个类时,表明这个类不能被继承。final类中的所有成员方法都会被隐式地指定为final方法。

  3. 使用final方法的原因有两个。第一个原因是把方法定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不需要使用final方法进行这些优化了)。类中所有的private方法都隐式地指定为final。

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

--结束END--

本文标题: Java中的Final关键字的用法介绍

本文链接: https://www.lsjlt.com/news/282796.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中的Final关键字的用法介绍
    这篇文章主要介绍“Java中的Final关键字的用法介绍”,在日常操作中,相信很多人在Java中的Final关键字的用法介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中的Final关键字的用法介绍...
    99+
    2023-06-16
  • Java中final关键字和final的4种用法
    目录1、final 定义2、final 的 4 种用法2.1.修饰类2.2.修饰方法2.3.修饰变量2.4.修饰参数3、final 作用 1、final 定义 final 翻译成中文...
    99+
    2024-04-02
  • Java中static关键字的介绍和用法
    本篇内容主要讲解“Java中static关键字的介绍和用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中static关键字的介绍和用法”吧!用类名去调用static有两层含义: 可以理...
    99+
    2023-06-02
  • Java中final关键字和final的四种用法实例
    目录final定义final的四种用法1. 修饰类2. 修饰方法3. 修饰变量4. 修饰参数final作用总结final定义 final翻译成中文的意思是 “最终&rdq...
    99+
    2023-02-06
    java中final关键字的用法 final有哪些用法 final java关键字
  • C#中的var关键字用法介绍
    从.NET 3.0开始,在方法内部可以使用var关键字声明局部变量。var关键字到底是什么?在何种情况下使用呢? var关键字用来隐式地声明一个数据类型,变量类型是在编译期确定的,而...
    99+
    2024-04-02
  • 详解Java中的final关键字
    目录概述使用方式修饰类修饰方法修饰变量概述 子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种...
    99+
    2022-11-13
    Java final关键字 Java final
  • Java中的final关键字使用方式
    目录一、final概述二、使用方式修饰类修饰方法修饰变量局部变量—引用类型成员变量一、final概述 子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随...
    99+
    2024-04-02
  • Java中的final关键字如何使用
    这篇文章主要讲解了“Java中的final关键字如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的final关键字如何使用”吧!一、final概述子类可以在父类的基础上改写父...
    99+
    2023-07-02
  • java中的final关键字怎么使用
    在Java中,final关键字可以用于修饰类、方法和变量。1. final修饰类:final修饰的类是不可被继承的,即该类不能有子类...
    99+
    2023-08-24
    java final
  • Java中关键字finalfinallyfinalize的区别介绍
    目录1. final1.1 final修饰属性1.2 final修饰方法1.3 final修饰类2. finally3. finalize这三个除了长得像以外,好像没什么联系 1. ...
    99+
    2024-04-02
  • java中this关键字的详细使用介绍
    this 的使用:修饰属性和方法,也可以理解为当前对象 this 调用构造器: 1.我们在类的构造器里,可以使用,调用本类中指定的其他构造器 2.构造器中不能通过”thi...
    99+
    2024-04-02
  • php中final关键字的作用
    final关键字在php中发挥以下作用:类声明:阻止类被继承;方法声明:阻止方法被覆盖;作用包括:增强安全性、提高性能、强制设计原则、避免不必要的继承。 php中final关键字的作用...
    99+
    2024-04-27
  • Java关键字null的详细介绍
    本篇内容主要讲解“Java关键字null的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java关键字null的详细介绍”吧!一、null是代表不确定的对象Java中,null是一个关键...
    99+
    2023-06-17
  • php中final关键字的用法是什么
    在PHP中,final关键字用于修饰类、方法或属性,表示它们不能被继承或覆盖。对于一个final修饰的类,不能被其他类继承;对于一个...
    99+
    2024-04-02
  • Java中如何使用final关键字
    Java中如何使用final关键字,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 一.final关键字的基本用法  在Java中,final关键字可以用来修饰类、方法和变量...
    99+
    2023-06-19
  • Java中final关键字的作用是什么
    这篇文章主要讲解了“Java中final关键字的作用是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中final关键字的作用是什么”吧!final关键字的作用final关键字可以...
    99+
    2023-06-20
  • 怎样用Java final 关键字
    怎样用Java final 关键字,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。下面好好地讲一讲 final 关键字,也希望给更多的小伙伴一些帮助。尽管继承可以让我们重用现有代...
    99+
    2023-06-03
  • Java中super关键字介绍以及super()的使用
    目录1、super的使用:2、先复习一下this关键字的使用。3、super关键字:总结:1、super的使用: (1)super是一个关键字。 (2)super和this很类似,我...
    99+
    2024-04-02
  • java final关键字怎么使用
    这篇文章主要介绍“java final关键字怎么使用”,在日常操作中,相信很多人在java final关键字怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java final关键字怎么使用”的疑惑有所...
    99+
    2023-07-04
  • Java关键字详解之final static this super的用法
    目录1. final 关键字:2. static 关键字:3. this 关键字:4. super 关键字:final,static,this,super 关键字总结 正文开始@A...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作