Java(二十五)final关键字

简介: Java(二十五)final关键字

Java中的final关键字在编写程序中,比较常用。尤其是在上文中的匿名内部类中。


final 表示最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。


使用final修饰的的类,是“断子绝孙”的。

 

一:final修饰成员变量


Final修饰的类的成员变量是常量,不可被改变。


代码如下所示:


public class T01 {
    public static void main(String[] args) {
        person per = new person();
        System.out.println(per.index);
    }
}
class person
{
    public final int index = 1;
}

控制台输出:

1

 

我们尝试一下改变person类中的index值,如下图所示:

1702538764320.png

final修饰基本数据类型的变量,值不能改变


final修饰引用数据类型的变量,不能改变的是变量存放的地址值,地址值上(对象)的

内容可以改变


final修饰局部变量,该变量在定义的时候可以不被赋值,但是在使用之时,该变量必须

被初始化


final修饰成员变量,该变量要么在定义时直接被初始化,要么在构造代码块中被初始

化,要么在构造方法中被初始化。


换言之,在对象创建完毕之前,被final修饰的成员变量一定要被赋值且只能被赋值一次


二:final修饰成员方法


Final修饰的成员方法是不可以被重写的。


public class T01 {
    public static void main(String[] args) {
        person per = new person();
        // System.out.println(per.index);
        per.drink();
    }
}
class person
{
    public final int index = 1;
    public final void drink()
    {
        System.out.println("person类使用final修饰的方法!");
    }
}

控制台输出:


person类使用final修饰的方法!

 

我们定义一个类来继承person类,尝试重写一下drink方法:

1702538807515.png

 

三:final修饰类


final 修饰的类叫作 final 类,final类通常是功能完整的,不能被继承,Java 中有许多类是 final 的,比如 String, Interger 以及其他包装类。


public class T01 {
    public static void main(String[] args) {
        person per = new person();
        // System.out.println(per.index);
        per.drink();
    }
}
final class person
{
    public final int index = 1;
    public final void drink()
    {
        System.out.println("person类使用final修饰的方法!");
    }
}

控制台输出:


person类使用final修饰的方法!

 

下面我们尝试一下定义一个子类来继承person类,结果如下图所示:

1702538842633.png

 

四:final优点


1:final 关键字,提高了性能,JVM 和 Java 应用都会缓存 final 变量。


2:final 变量,可以安全的在多线程环境下进行共享,而不需要额外的同步开销。

 

5、总结


1、final 关键字可以用于修饰成员变量、本地变量、方法以及类。


2、final 成员变量,必须在声明的时初始化或者在构造器中初始化,否则报编译错误。


3、final 变量不能再次赋值;final 方法不能被重写;final 类不能被继承。


4、在匿名类中,所有变量都必须是 final 变量。


5、接口中,声明的所有变量本身是 final 的。


6、final 和 abstract 这两个关键字是反相关的,final 类就不可能是 abstract 的。


7、声明时未初始化的 final 变量,称为空白 final 变量(blank final variable),必须在构造器中进行初始化,或者调用 this() 初始化,否则,编译器会报错final变量(变量名)需要进行初始化。


8、final修饰变量命名单词全大写,每个单词用下划线分割


9、对于集合对象声明为 final 指的是引用不能被更改。


10、final修饰类,该类不被继承(无子类,但是该类可以有父类)

 

以上大概是java中final关键字的使用。

 

有好的建议,请在下方输入你的评论。


目录
相关文章
|
27天前
|
存储 缓存 安全
除了变量,final还能修饰哪些Java元素
在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
25 2
|
28天前
|
JavaScript 前端开发 Java
java中的this关键字
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。自学前端2年半,正向全栈进发。若我的文章对你有帮助,欢迎关注,持续更新中!🎉🎉🎉
50 9
|
28天前
|
设计模式 JavaScript 前端开发
java中的static关键字
欢迎来到瑞雨溪的博客,博主是一名热爱JavaScript和Vue的大一学生,致力于全栈开发。如果你从我的文章中受益,欢迎关注我,将持续分享更多优质内容。你的支持是我前进的动力!🎉🎉🎉
51 8
|
1月前
|
Java 开发者
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
46 4
|
27天前
|
Java
final 在 java 中有什么作用
在 Java 中,`final` 关键字用于限制变量、方法和类的修改或继承。对变量使用 `final` 可使其成为常量;对方法使用 `final` 禁止其被重写;对类使用 `final` 禁止其被继承。
32 0
|
2月前
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
28 3
|
2月前
|
算法 Java
在Java编程中,关键字和保留字是基础且重要的组成部分,正确理解和使用它们
【10月更文挑战第13天】在Java编程中,关键字和保留字是基础且重要的组成部分。正确理解和使用它们,如class、int、for、while等,不仅能够避免语法错误,还能提升代码的可读性和执行效率。本指南将通过解答常见问题,帮助你掌握Java关键字的正确使用方法,以及如何避免误用保留字,使你的代码更加高效流畅。
36 3
|
2月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
38 3
|
2月前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
在Java并发编程中,`final`关键字不仅用于修饰变量、方法和类,还在多线程环境中确保对象状态的可见性和不变性。本文深入探讨了`final`关键字的作用,特别是其在final域重排序规则中的应用,以及如何防止对象的“部分创建”问题,确保线程安全。通过具体示例,文章详细解析了final域的写入和读取操作的重排序规则,以及这些规则在不同处理器上的实现差异。
了解final关键字在Java并发编程领域的作用吗?
|
2月前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
28 5