理解final关键字

理解final关键字final 在 Java 中是一个保留的关键字 可以声明成员变量 方法 类以及本地变量 一旦你将引用声明作 final 你将不能改变这个引用了 编译器会检查代码 如果你试图将变量再次初始化的话 编译器会报编译错误 一 final 关键字基本用法 1 修饰变量凡是对成员变量或者局部变量 在方法中的或者代码块中的变量称为本地变量 声明为 final 的都叫作 final 变量 final 变量经常和 stat

final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。

一.final关键字基本用法

1.修饰变量  

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

final修饰基本数据类型的变量时,必须赋予初始值且不能被改变,修饰引用变量时,该引用变量不能再指向其他对象

例如:

理解final关键字

当final修饰基本数据类型变量时不赋予初始值以及引用变量指向其他对象时就会报错

当final修饰基本数据类型变量被改变时,就会报错

理解final关键字

2.修饰方法

final也可以声明方法。方法前面加上final关键字,代表这个方法不可以被子类的方法重写。如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。

理解final关键字

3.修饰类

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

理解final关键字

二.深入分析final关键字

1.被final修饰的对象内容是可变的

虽然对象被final修饰对象不可被继承,但其内容依然可以被改变

理解final关键字

2.final关键字与static对比

static关键字修饰变量时,会使该变量在类加载时就会被初始化,不会因为对象的创建再次被加载,当变量被static 修饰时就代表该变量只会被初始化一次

理解final关键字

例如图中所示,被static修饰的变量j,虽然创建两个对象,对值并没有变化。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204786.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:32
下一篇 2026年3月19日 下午7:32


相关推荐

  • Linux中安装Apache服务器,并进行必要的测试_怎么安装apache

    Linux中安装Apache服务器,并进行必要的测试_怎么安装apache一般Linux系统中自带apache版本,但是用这个自带的版本启动时,就会出现端口被占用等各种问题,因为自带的apache版本都比较低,所以首先查看Linux中是否已有安装的低版本的apache,如果有先卸载,然后再安装。本文用的Linux是CentOS6.5版本。一、卸载apache已安装的软件包1、命令rpm-qa|grephttpd,查看系统中…

    2026年2月9日
    4
  • acwing-190. 字串变换(双向bfs)

    acwing-190. 字串变换(双向bfs)已知有两个字串 A, B 及一组字串变换的规则(至多 6 个规则):A1→B1A2→B2…规则的含义为:在 A 中的子串 A1 可以变换为 B1、A2 可以变换为 B2…。例如:A=abcd B=xyz变换规则为:abc → xu ud → y y → yz则此时,A 可以经过一系列的变换变为 B,其变换的过程为:abcd → xud → xy → xyz共进行了三次变换,使得 A 变换为 B。输入格式输入格式如下:A BA1 B1A2 B2… …第一行是两个给定的字符串

    2022年8月9日
    6
  • 五重防护组合拳,天翼云安全加固版OpenClaw适配多行业需求

    五重防护组合拳,天翼云安全加固版OpenClaw适配多行业需求

    2026年3月14日
    2
  • springBoot 入门(二)—— 使用 spring.profiles.active来区分配置

    springBoot 入门(二)—— 使用 spring.profiles.active来区分配置背景很多时候 我们项目在开发环境和生成环境的环境配置是不一样的 例如 数据库配置 在开发的时候 我们一般用测试数据库 而在生产环境的时候 我们是用正式的数据 这时候 我们可以利用 profile 在不同的环境下配置用不同的配置文件或者不同的配置 springboot 提供 springboot 允许你通过命名约定按照一定的格式 application profile propert

    2026年3月26日
    2
  • visio 2013下载安装「建议收藏」

    visio 2013下载安装「建议收藏」Visio2013ed2k://|file|cn_visio_professional_2013_with_sp1_x86_and_x64_dvd_3911008.iso|1099735040|EB4F690733452B45D38C0EFE9D53E7FA|/密钥VisioProfessional2013:2NYF6-QG2CY-9F8XC-GWMBW-29VV8

    2026年4月14日
    10
  • pytest运行_python压测

    pytest运行_python压测前言pytest运行完用例之后会生成一个.pytest_cache的缓存文件夹,用于记录用例的ids和上一次失败的用例。方便我们在运行用例的时候加上–lf和–ff参数,快速运行上一

    2022年7月29日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号