首页 > 编程语言 >Java基础之——final关键字的使用

Java基础之——final关键字的使用

时间:2024-07-12 23:26:45浏览次数:9  
标签:初始化 Java 变量 关键字 修饰 final

#Java基础复习#

#参考文章:Java:final关键字的作用 (方法、变量、类)_java语言中在类定义时使用final关键字修饰是指这个类-CSDN博客#

一、理解含义

final是Java中一个保留的关键字,可以用于修饰变量、方法和类。

任何实体(变量,方法或类)一旦被声明final后,只能分配(赋值)一次。也就是说,

  • final修饰的变量不能用另一个值重新初始化

  • final方法不能被重写

  • final类不能被继承

编译器会检查代码,如果试图将final修饰的变量再次初始化的话,会报编译错误。

二、final变量、final方法、final类的特点

1.final修饰的变量

在Java中,我们无法更改final变量的值,final变量是只读的。例:

图示代码中的final变量b被初始化为5后再次被赋值时代码报错; 

注意:在Java中声明final变量时建议使用大写形式。例如:final int MAX = 100;

(在了解final方法和final类之前,要掌握Java的继承方面的基础。)

2.final修饰的方法

在Java中,被final修饰的成员方法不能被子类重写(覆盖)。例如,

public class Peopel {
    
    public final void eat(){
        System.out.println("人可以吃东西");
    }
    public void work(){
        System.out.println("人的任务是工作");
    }
    
}


class student extends Peopel{
    @Override
    public void work() {
        System.out.println("学生的任务是学习");
    }
    
}

在上面的示例中,我们创建了一个People类其中包含普通成员方法work()和final方法eat()。在这里,Student类继承了People类,并且顺利的重写了work()方法;

而当我们试图覆盖People类中被final修饰的eat()方法时,会提示编译错误。

3.final修饰的类

在Java中,final类不能被另一个类继承。

例如图中People类被final修饰后,便不能再被Student类所继承;

三、final关键字的应用、优点和注意点

1.final关键字的优点:

JVM和Java应用都会对final变量进行缓存。提高了程序运行性能。
final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。

2.应用于不可变类
创建不可变类要用到final关键字。不可变类是指它的对象一旦被创建了就不能被更改。例如String类型就是不可变类。不可变类有很多好处,譬如它们的对象是只读的,可以在多线程环境下安全的共享,不用额外的同步开销等等。

3.注意:

①final成员变量必须在声明的时候初始化或者在构造器中初始化,否则会报编译错误。

(没有在声明时初始化的final变量称为:blank final variable(空白final变量),它们必须在构造器中被初始化,或者调用this()初始化。否则,编译器会报错“final变量(变量名)需要进行初始化”。)

②对于集合、数组等类型的对象声明为final变量指的是引用的指向不能被更改,但可以向其中增加,删除或者改变其内容

③按照Java代码惯例,final变量就是常量,通常常量名要大写:
private final int COUNT = 10;


                        

标签:初始化,Java,变量,关键字,修饰,final
From: https://blog.csdn.net/Future_yzx/article/details/140277057

相关文章

  • 微信小程序源码-基于Java后端的大学生社团活动管理系统毕业设计(附源码+论文)
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......
  • 微信小程序源码-基于Java后端的学习资料库系统毕业设计(附源码+论文)
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......
  • Web开发 —— 放大镜效果(HTML、CSS、JavaScript)
    目录一、需求描述二、实现效果三、完整代码四、实现过程1、HTML页面结构2、CSS元素样式3、JavaScript动态控制(1)获取元素(2)控制大图和遮罩层的显隐性(3)遮罩层跟随鼠标移动(4)控制遮罩层移动范围(5)显示放大图一、需求描述前端实现放大镜效果;鼠标移入图片区域,显示遮......
  • Java基础(二)
    一、BigDecimal等值比较compareTo()忽略精度equals()比较值和精度(1.0,1.00比较结果为false)==BigDecimal是对象,不能用==比较值BigDecimal(Double)创建是损失精度的BigDecimal(String)创建是精确的二、对负数取绝对值不一定是正数Math.abs()int:......
  • Java-笔试强训(1~12)
    大家好,我是普通一本的在校大学生一枚,目前在学习java。之前也学了一段时间,本人现在已经大二结束了,开学就大三了,时间过的真的很快。我会利用好这个暑假,来复习之前学过的内容,并整理好之前写过的博客进行发布。如果博客中有错误或者没有读懂的地方。热烈欢迎大家在评论区进行讨论!!!......
  • java日期格式化
    java日期格式化1.一代日期类Date结合SimpleDateFormat格式化(不推荐)/***@authorshui*@description一代日期类Date结合SimpleDateFormat格式化(SimpleDateFormat只能格式化Date类型)*@created2024/7/11*/publicclassSimpleDateFormatExample{publicstati......
  • 计算机Java项目|基于SpringBoot的学生选课系统的设计与实现
    作者主页:编程指南针作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互......
  • 计算机Java项目|基于SpringBoot的企业人事管理系统
    作者主页:编程指南针作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互......
  • 动态条件实现java
    提交页面设计 json数据格式[{"name":"规则1","action":{"with":[{"type":"SHOW","targets":[......
  • Java三剑客:封装、继承、多态的魔法世界
    第一章:封装的艺术——保护你的宝藏案例分析:银行账户系统想象一下,你正在构建一个银行账户系统。每个账户都有一个余额,这个余额需要受到严格的保护,不能被随意修改。我们可以通过封装来实现这一目标。示例代码:publicclassBankAccount{privatedoublebalance;//......