zoukankan      html  css  js  c++  java
  • 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修饰的引用类型变量将永远指向一个固定的对象, 不能被修改; 对象的数据值可以被修改.
  • 相关阅读:
    GZS与小公园(DFS)
    II play with GG(思维规律)
    bearBaby loves sleeping(BFS)
    湖南大学新生赛C,G,J题解
    bootstrap 标签页的使用(tab)
    js 循环生成元素,并为元素添加click事件,结果只执行最后一个点击事件
    使用原生js实现一个列表数据展示页面不同的项目状态使整行显示不同颜色。
    【Vue】详解Vue组件系统 目录
    基于TCP与UDP协议的socket通信
    ElementUI三级菜单checkBox全选实现
  • 原文地址:https://www.cnblogs.com/coderD/p/13823805.html
Copyright © 2011-2022 走看看