小工具知识网

当前位置: 首页 > 行业知识 > Java final关键字

行业知识

Java final关键字

2026-10-26 21:50:17 来源:互联网转载

    可以修饰类、属性、方法和局部变量。

何时使用:

1、不希望某个类被继承,用final修饰该类。

2、不希望父类的某个方法被子类覆盖/重写,用final修饰该方法。

3、不希望类的某个属性的值被修改,用final修饰该属性。

4、不希望某个局部变量被改变,用final修饰。

Java中final和static修饰的变量是在什么时候赋值的?_程序IT圈的博客-CSDN博客

链接中的总结单拎出来:

①单独用final修饰的变量也有可能在字节码找到对应的ConstantValue属性,但是会被JVM忽略掉。

②final修饰的实例属性,在实例创建的时候才会赋值。

③static修饰的类属性,在类加载的准备阶段赋初值,初始化阶段赋值。

④static+final修饰的String类型或者基本类型常量,JVM规范建议在初始化阶段赋值,但是HotSpot VM直接在准备阶段就赋值了。

⑥static+final修饰的其他引用类型常量,赋值步骤和第二点的流程是一样的。?

细节:

1、局部变量使用final修饰,它的值不允许改变,即:

     如果是基本数据类型,则不允许值改变。

     如果是引用类型,它的值就是地址,只要地址不变就行,指向的对象自身属性可以改变。

2、final修饰的属性也叫常量,一般用XX_XX_XX来命名。

3、final修饰的属性定义时必须赋初值,以后不可修改,可在以下时刻赋初值:

    ①定义时。

    ②构造器中。

    ③代码块中。

4、若final修饰的属性是静态的(static) ,则只能在以下赋初值,不能在构造器赋初值。

    ①定义时。

        定义时直接赋值,赋值操作将会在类加载的准备阶段就赋值完毕。

            好处:可以让代码更加简洁

            坏处:如果赋值的操作比较耗时,就会影响类的加载速度。

    ②代码块。(前提是不能在定义时赋值)

         常量的初始化被延迟到静态代码块执行时,即初始化阶段。

             可以在需要复杂操作时实现更好的控制,而且可以在静态代码块中捕获异常。

5、final不能修饰构造方法。

6、final + static往往搭配使用,效率高,不会导致类加载,底层编译器做了优化。

    

7、方法形参也可以使用final修饰。

上一篇:微擎1.7app模块安装教程,零基础也能轻松上手!

下一篇:怎么确定服务器有没有内网?