Java基础---final 关键字

news2024/9/22 21:24:33

目录

定义:

用途:

使用注意事项:

final 变量

final 方法

final 类

小结


  • 定义:

    • Java中,final 表示最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思
  • 用途:

    • 把方法锁定,以防任何继承类修改它的含义
    • final 变量,可以安全的在多线程环境下进行共享,而不需要额外的同步开销(只读)
    • 提高了性能,JVM 和 Java 应用都会缓存 final 变量
    • 效率
      • 在早期的Java实现版本中,会将final方法转为内嵌调用
      • 但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升(现在的Java版本已经不需要使用final方法进行这些优化了)
    • final 应用于类、方法和变量时意义是不同的,但本质是一样的,都表示不可改变
  • 使用注意事项:

    • final 修饰变量,表示变量的值不可改变,此时该变量可被称为常量
    • final 修饰方法,表示方法不能被子类重写
    • final 用在类的前面表示该类不能有子类,即该类不可以被继承
  • final 变量

    • final变量,凡是对成员变量或者(在方法中的或者代码块中的变量称为本地变量)声明为 final 的都叫作 final 变量
    • final 变量经常和 static 关键字一起使用,作为常量
    • 下面是 final 变量的例子:

    • final 变量是只读的
  • final 方法

    • final 声明方法,这个方法不允许在派生类中进一步被覆写(override)
    • Java 中非私有的成员方法默认都是虚方法,而虚方法就可以在派生类中被覆写
    • 为保证某个类上的某个虚方法不在派生类中被进一步覆写,就需要使用 final 修饰符来声明,让编译器(例如 javac)与 JVM 共同检查并保证这个限制总是成立
    • 下面是 final 方法的例子:

    • final方法在编译阶段绑定,称为静态绑定(static binding);提高了调用速度
  • final 类

    • final 修饰的类叫作 final 类,final类通常是功能完整的,不能被继承,Java 中有许多类是 final 的,比如 String,Interger 以及其他包装类
    • 当用final修饰一个类时,表明这个类不能被继承
    • final类中的所有成员方法都会被隐式地指定为final方法
  • 小结

    • final 关键字可以用于修饰成员变量、本地变量、方法以及类
    • final 成员变量,必须在声明的时候初始化或者在构造器中初始化,否则报编译错误
    • final 变量不能再次赋值;final 方法不能被重写;final 类不能被继承
      • 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改
      • 如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,但是它指向的对象的内容是可变的
    • 在匿名类中,所有变量都必须是 final 变量
    • 接口中,声明的所有变量本身是 final 的
    • final 和 abstract 这两个关键字是反相关的,final 类就不可能是 abstract 的
    • 声明时未初始化的 final 变量,称为空白 final 变量(blank final variable),必须在构造器中进行初始化,或者调用 this() 初始化,否则,编译器会报错final变量(变量名)需要进行初始化
    • 按照 Java 编码规范,final 变量就是常量,而且通常常量名要大写

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/801829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot+mybatis多数据源的事务问题

1.springbootmybatis实现多数据源后,针对单个数据源我们可以使用Transactional(name"xxxTransactionManager") 来指定使用的事务管理器,但是如果被注解的方法需要同时支持两个事务管理器呢,这个时候如果用Transactional注解就不 …

设备数字化平台在制药行业数字化转型的思考与实践

近年来,全球制药行业正面临着数字化转型的浪潮。制药4.0的概念正引领着工业物联网、机器人流程自动化和人工智能等先进技术在制药行业的广泛应用。然而,尽管数字化转型在许多行业已经取得了巨大成功,制药行业仍然面临一些挑战。数据孤岛、人才…

git撤销上一次的commit

一行命令 git reset --soft HEAD^如果在vscode上面,就可以

路灯防雷测试标准方案

路灯作为城市照明的重要组成部分,不仅影响着城市的美观和安全,也涉及到城市的节能和环保。因此,路灯的质量和性能是非常重要的。而路灯由于其安装位置和工作环境的特殊性,很容易受到雷击的影响,导致路灯的损坏或故障。…

Sanic 是什么?从原理到实践,全面解析 Sanic 框架的奥秘

在 Python 中,有许多 Web 框架可以帮助开发者构建高性能的异步 Web 应用程序。其中,Sanic 是一款基于 Python 的异步 Web 框架,它提供了快速、简洁和灵活的方式来构建高性能的 Web 应用程序。本文将介绍 Sanic 框架的基本概念、特点和优势&am…

忘记安卓图案/密码锁如何解锁?

如何解锁Android手机图案锁?如何删除忘记的密码?Android 手机锁定后如何重置?这是许多智能手机用户在网上提出的几个问题。为了回答这些问题,我们想出了一些简单有效的方法来解锁任何设备而不丢失数据。 忘记手机密码可能会令人恐…

知网G4《课堂内外》期刊点评_投稿邮箱

知网G4《课堂内外》期刊点评_投稿邮箱 《课堂内外》青少年系列期刊因质量一流、发行争先、力创优秀青少年媒体品牌而备受读者喜爱和社会关注。同时为广告诉求、信息传递构筑起一个面向学生、家庭、学校的高效率低成本(CPM)的传媒平台。 主管单位 重庆市…

中国国际视听大会即将在北京召开,国产8K影视品牌齐聚

由国家广播电视总局、北京市人民政府指导,北京市广播电视局、北京经济技术开发区管委会主办的中国(北京)国际视听大会(CIAC)于2023年8月3日至6日在北京亦创国际会展中心举行。博冠光电作为国产8K摄像机先行者受邀参与&…

支配树学习笔记

学习链接【学习笔记】支配树_cz_xuyixuan的博客-CSDN博客 主要的求法是最后两个结论: 定理4用来求sdom,先搞一个dfs树,然后将点按dfs序从大到小加入,对每个点维护到当前根(即已加入点)路径上sdom最小是哪个…

物联网场景中的边缘计算解决方案有哪些?

在物联网场景中,边缘计算是一种重要的解决方案,用于在物联网设备和云端之间进行实时数据处理、分析和决策。HiWoo Box作为工业边缘网关设备,具备边缘计算能力,包括单点公式计算、Python脚本编程以及规则引擎,它为物联网…

《Kubernetes故障篇:unable to retrieve OCI runtime error》

一、背景信息 1、环境信息如下: 操作系统K8S版本containerd版本Centos7.6v1.24.12v1.6.12 2、报错信息如下: Warning FailedCreatePodSandBox 106s (x39 over 10m) kubelet (combined from similar events): Failed to create pod sandbox: rpc error: …

python语句学习系列(2)--读取.dat文件

系列文章目录 文章目录 系列文章目录前言1、引入库2、读取dat文件3、输出行列数控制(省略号去除)4、只显示前/后几行5、保存为Excel总结 前言 1、引入库 import pandas as pd import numpy as np import sys2、读取dat文件 2.1、第一种读取 df pd.read_table(r"E:\p…

FastText使用介绍

FastText概念介绍 FastText 是一个由 Facebook 开发的用于文本分类和向量化的开源工具,它是 Word2Vec 的一个拓展,能够处理词汇中的子词信息。FastText 基于神经网络模型,可以将词语表示为高维向量,并且保留了词汇中的语义信息。…

亚马逊美国站暖风机UL1278测试报告

取暖器是指用于取暖的设备,取暖设备根据加热介质不同、加热原理不同,大体可以分为:燃气取暖设备、电加热取暖设备、锅炉取暖设备、电壁挂炉取暖。但一般这类产品要上架美国亚马逊平台都必须要办理UL1278测试报告。 一、UL1278标准适用产品范围…

vscode搭建用ASP文件测试开发的环境

下载iis express安装包,iis express下载链接:Download Internet Information Services (IIS) 10.0 Express from Official Microsoft Download Center ​ 不适合的可以下载旧的iis express版本,系统没有相适应的.Net版本的还要下载。 安装完…

Java 版 spring cloud +spring boot 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…

网络安全(黑客)自学建议笔记

前言 网络安全,顾名思义,无安全,不网络。现如今,安全行业飞速发展,我们呼吁专业化的 就职人员与大学生 ,而你,认为自己有资格当黑客吗? 本文面向所有信息安全领域的初学者和从业人员…

IBM Spectrum LSF —— 计算资源的管理和批处理作业的调度

IBM Spectrum LSF 是什么? LSF(Load Sharing Facility)是IBM旗下的一款分布式集群管理系统软件,负责计算资源的管理和批处理作业的调度。它给用户提供统一的集群资源访问接口,让用户透明地访问整个集群资源。同时提供了…

如何使用Redis配置与优化

目录 一、关系数据库与非关系型数据库 关系型数据库 非关系型数据库 关系型数据库和非关系型数据库区别 ① 数据存储方式不同 ② 扩展方式不同 ③ 对事务性的支持不同 非关系型数据库产生背景 二、Redis概念 Redis优点 三、Redis 安装部署 第一步 关闭防火墙和安全…

【Nodejs】接口规范和业务分层

1.接口规范-RESTful架构 1.1 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编…