• final 在 Java 中有什么作用?


    Java基础

    final 在 Java 中有什么作用?

    1、final修饰类:表示该类不能被继承

    • 使用final修饰类的目的简单明确: 表明这个类不能被继承。
    • 当程序中有永远不会被继承的类时, 可以使用final关键字修饰。
    • 被final修饰的类所有成员方法都将被隐式修饰为final方法。

    2、修饰方法:表示方法不能被重写

    • 使用final修饰方法有两个作用, 首要作用是锁定方法, 不让任何继承类对其进行修改.
    • 另外一个作用是在编译器对方法进行内联, 提升效率. 但是现在已经很少这么使用了, 近代的Java版本已经把这部分的优化处理得很好了. 但是为了满足求知欲还是了解一下什么是方法内敛.
    • 方法内敛: 当调用一个方法时, 系统需要进行保存现场信息, 建立栈帧, 恢复线程等操作, 这些操作都是相对比较耗时的. 如果使用final修饰一个了一个方法a, 在其他调用方法a的类进行编译时, 方法a的代码会直接嵌入到调用a的代码块中.

    3、修饰变量:表示变量只能一次复制以后值不能被修改(常量)

    • 当final修饰的是一个基本数据类型数据时, 这个数据的值在初始化后将不能被改变; 当final修饰的是一个引用类型数据时, 也就是修饰一个对象时, 引用在初始化后将永远指向一个内存地址, 不可修改. 但是该内存地址中保存的对象信息, 是可以进行修改的

    final修饰基本数据类型时的内存示意图:

    Snipaste_2020-10-15_23-12-28

    final修饰引用数据类型的示意图:

    Snipaste_2020-10-15_23-14-01

    • 不难看出final修饰变量的本质: final修饰的变量会指向一块固定的内存, 这块内存中的值不能改变.
    • 引用类型变量所指向的对象之所以可以修改, 是因为引用变量不是直接指向对象的数据, 而是指向对象的引用的. 所以被final修饰的引用类型变量将永远指向一个固定的对象, 不能被修改; 对象的数据值可以被修改.
  • 相关阅读:
    自定义UILabel,使文字居左上显示
    xcode 7 运行项目报错 -fembed-bitcode is not supported on versions of iOS prior to 6.0
    git 如何删除本地未提交的文件
    coco2d-x技术
    mac 查看端口是否被使用
    ios 提交
    oc基础复习10-OC的id
    oc基础复习09-OC的self 和super(深入理解)
    oc基础复习08-OC的类方法
    oc基础复习07-OC的弱语法(转)
  • 原文地址:https://www.cnblogs.com/coderD/p/13823805.html
Copyright © 2020-2023  润新知