Java基础final详解

2023-05-16

final中文意思:最后的,最终的

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

1.当不希望类被继承时,可以用final修饰。

final class A{ } //不可被继承

2.当不希望父类的某个方法被子类覆盖/重写(override)时,可以用final关键字修饰。

public final void hi(){} //不可重写的方法

3.当不希望类的的某个属性的值被修改,可以用final修饰.

public final double NUM = 0.7; //值不能修改

4.当不希望局部变量被修改,可以使用final修饰

public void hi(){
    final double NUM = 0.7; //局部变量不能被修改
}

使用细节:

  1. final修饰的属性又叫常量,一般用XX_XX_XX 来命名

  2. final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一【选择一个位置赋初值即可】:

    • 定义时直接赋值

    • 在构造器中

    • 在代码块中

  3. 如果final修饰的属性是静态的,则初始化的位置只能是

    • 定义时赋值

    • 在静态代码块(不能在构造器中赋值,因为类加载但构造器不一定使用)

  4. final类不能继承(方法就不用final),但是可以实例化对象。

  5. 如果类不是final类,但是含有final方法,则该方法虽然不能重写,但是可以被继承(能被子类使用)。

  6. final不能修饰构造器

  7. final和 static往往搭配使用,效率更高,不会导致类加载.底层编译器做了优化处理。

  8. 包装类(Integer,Double,Float,Boolean等都是final),String也是final类。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java基础final详解 的相关文章

  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 如何将双精度/浮点四舍五入为二进制精度?

    我正在编写对浮点数执行计算的代码的测试 不出所料 结果很少是准确的 我想在计算结果和预期结果之间设置一个容差 我已经证实 在实践中 使用双精度 在对最后两位有效小数进行四舍五入后 结果始终是正确的 但是usually四舍五入最后一位小数后
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供

随机推荐

  • 针对Android MediaCodec解码延时问题的替代解决方案

    如题 xff0c 本人在jni层实现了avc hevc的解码 xff0c 避免了在java上层调用系统的MediaCodec解码出现的延时问题 xff0c 完美支持1080P xff0c 4K xff08 具体看手机性能 xff09 xff
  • 系统环境变量path的列表不见了

    如题 xff0c 在编辑系统环境变量时 xff0c 发现path的环境变量原先是列表显示的 xff0c 看起来比较清晰 xff0c 而现在变成了一个文本框了 xff0c 就不那么一目了然了 于是在网上找到下面这个文章 xff0c 能很好解决
  • gazebo(1):gazebo常见问题及解决办法

    目录 1 将自己创建的gazebo模型导入后 xff0c 模型不停得抖动 xff0c 翻转 2 save world as 之后卡死 3 下载gazebo官方模型 xff1a 4 gazebo更新后无法打开 5 运行gazebo后报错 6
  • Makefile中的$(1)是什么

    Linux工程的编译要用到make工具 xff0c 平台不一样 xff0c 只是工具链不同 xff0c 但Makefile是编译系统的关键所在 xff0c 因此掌握Makefile的编写规则是非常重要的 尽管有了cmake这样更容易使用的编
  • gl的矩阵模式及其相应的矩阵变换函数

    以Android的GL10为例 xff0c 说明一下矩阵模式及其相应的矩阵变换函数 矩阵模式一共分为两种 xff1a gl glMatrixMode GL10 GL MODELVIEW 和 gl glMatrixMode GL10 GL P
  • 对md5sum程序的修改

    linux下自带md5sum工具 xff0c 可以对文件计算md5值 xff0c 但这个命令行工具不能直接对字符串求md5 xff0c 而对一个字符串求md5是一个比较有用的需求 xff0c 比如计算签名 于是对源码md5sum c修改了一
  • 物联网通信协议——比较-MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP

    原文链接 xff1a https blog csdn net lightrain0 article details 84343857 AMQP amp MQTT amp DDS https www youtube com watch v 6
  • 门电路逻辑符号大全(三态门,同或门,异或门,或非门,与或非门, 传输门,全加器,半加器等)

    最近要研究一下滤波器设计的无乘法器的实现 xff0c 所以要学习一下加法器的电路 xff0c 丢了一段时间 xff0c 忘的差不多了 xff0c 这里罗列一下常用的门电路的符号 这是一个1位全加器的数字电路组成 xff1a 以下两幅图可以复
  • 实函数傅里叶变换的奇偶虚实特性

    本文内容来源于他人的PPT xff0c 经本人整理而成 xff0c 算是对数字信号处理的复习吧 而实偶函数的傅里叶变换仍然是一个实偶函数的性质正是DCT的基础 xfeff xfeff
  • 多面体及欧拉公式及广义欧拉公式

    像正方体 xff0c 四棱锥这样的平面多面体属于简单多面体 xff0c 它们可以与球拓扑同构 xff0c 即可以连续拓扑变换成一个球 它们满足欧拉公式 xff1a v e 43 f 61 2 其中v是顶点 xff08 vertex xff0
  • mysql在表的某一位置增加一列的命令

    如果想在一个已经建好的表中添加一列 xff0c 可以用诸如 xff1a alter table t1 add column addr varchar 20 not null 这条语句会向已有的表t1中加入一列addr xff0c 这一列在表
  • tar命令中的-C作用

    tar xzvf abc tar gz C tmp 上面的命令将abc tar gz这个压缩包解压到当前目录下的tmp目录下 xff0c 而不是当前目录下 xff0c 这就是 C选项的作用
  • Java多线程

    一 基础概念 1 CPU核心数和线程数 多核心指的是单芯片多处理器 xff0c 将多个CPU集成到同一个芯片内 xff0c 不同的CPU可以单独的运行程序 目前主流的CPU有四核 六核 八核 增加核心数目的是为了增加线程数 xff0c 一般
  • ros(23):接收rviz中的2D Nav Goal、2D Pose Estimate消息

    1 rviz 教程 1 1 2D Nav Goal 2D Nav Goal Keyboard shortcut g This tool lets you set a goal sent on the 34 goal 34 ROS topic
  • RealSense SR300 坑4米 获取相机参数

    硬件 相机的原理我了解的也不甚多 xff0c 看到一篇讲的很好的文章 xff0c 就在这里引用了 SR300设备的红外线发射器 xff08 IR Laser Projector xff09 发射的 结构光 xff0c 经物体反射后会被红外线
  • 算法的分类

    算法有多种分类方式 xff0c 可以根据实现方式分类 xff0c 也可以根据设计方法分类 xff0c 还可以根据应用领域进行分类 不同的分类方式有不同的特点 按照实现方式分类 xff0c 可以将算法分为递归算法 迭代算法 逻辑算法 串行算法
  • Eclipse搭建stm32+jlink开发环境全攻略(进阶篇二)

    Eclipse搭建stm32 43 jlink开发环境全攻略 进阶篇 二 我们设计程序往往会遇到这样的一个需求 xff0c 那就是我们的程序起始位置需要重新定位 xff0c 并不是默认的0x08000000 xff0c 这种情况往往出现在有
  • 不要在小公司做底层软件开发

    在这里makekam对底层软件的理解就是指驱动开发 xff0c 代码移植等工作 其中也包括底层的算法 在小公司做软件不要做底层软件开发 xff0c 犹如在公司做硬件开发不要只是焊接电路板 小公司处于产业链的最末端 xff0c 没有自己的核心
  • 多旋翼飞控篇新手课堂教程(共九集)

    多旋翼飞控篇新手课堂第一课 xff0c 将你的NAZA M真正升级成NAZA V2 http www mxkong com thread 134 1 1 html 出处 模型控MxKong 多旋翼飞控篇新手课堂第二课 xff1a NAZA远
  • Java基础final详解

    final中文意思 最后的 最终的 final 可以修饰类 属性 方法和局部变量 1 当不希望类被继承时 可以用final修饰 final class A 不可被继承 2 当不希望父类的某个方法被子类覆盖 重写 override 时 可以用