当前位置: 首页 > news >正文

[Java基础揉碎]final关键字

目录

介绍 

在某些情况下,程序员可能有以下需求,就会使用到final

final注意事项和讨论细节 

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

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

3) 如果final修饰的属性是静态的,则初始化的位置只能是 ①定义时 ②在静态代码块 不能在构造器中赋值(因为构造器是在创建对象的时候调用, 而我们静态变量的初始化实在类加载的时候就要给值的)

4) final类不能继承,但是可以实例化对象(可以创建对象 new对象)

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

6)一般来说,如果一个类已经是final类了,就没有必要再将方法修饰成final方法(因为final类已经不能被继承也就不能被重写, 没必要再用final修饰)

7) final不能修饰构造方法(即构造器)

8) final 和 static往往搭配使用,效率更高,不会进行类加载,底层编译器做了优化处理

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


 

介绍 

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

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

// 方法的形参也是可以的

在某些情况下,程序员可能有以下需求,就会使用到final

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

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

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

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

final注意事项和讨论细节 

1) final修饰的属性又叫常量,一般用XX_XX_XX来命名
2) final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一[选择一个位置赋初值即可]:

        ①定义时:  public final double TAX_RATE=0.08;

        ②在构造器中

        ③在代码块中

 

3) 如果final修饰的属性是静态的,则初始化的位置只能是 ①定义时 ②在静态代码块 不能在构造器中赋值(因为构造器是在创建对象的时候调用, 而我们静态变量的初始化实在类加载的时候就要给值的)
4) final类不能继承,但是可以实例化对象(可以创建对象 new对象)
5) 如果类不是final类,但是含有final方法,则该方法虽然不能重写,但是可以被继承
6)一般来说,如果一个类已经是final类了,就没有必要再将方法修饰成final方法(因为final类已经不能被继承也就不能被重写, 没必要再用final修饰)
7) final不能修饰构造方法(即构造器)
8) final 和 static往往搭配使用,效率更高,不会进行类加载,底层编译器做了优化处理

// 只用static这么用的时候会进行类加载, 静态代码块被加载了 

//  final 和 static搭配使用时, 不会进行类加载

9) 包装类(Integer,Double,Float, Boolean等都是final),String也是final类
http://www.lryc.cn/news/324993.html

相关文章:

  • 用OceanBase binlog service 轻松进行数据回滚
  • 【C++】学习记录--condition_variable 的使用
  • Linux之时间子系统(四): tick 层模块(periodic 和dynamic )
  • Docker Command
  • Linux系统部署Paperless-Ngx文档管理系统结合内网穿透实现公网访问
  • 6.shell case控制语句
  • 如何判断HDMI接口版本是1.4还是2.0呢?
  • 【开发环境搭建篇】NodeJS的安装和配置
  • 【Docker】docker和docker-compose一键安装脚本(linux)
  • 在 Windows 中安装配置并启动运行 Jenkins【图文详细教程】
  • C# 读取txt文本所有行
  • STM32使用常见错误合集(正在更新版)
  • Java Random类
  • 【Spring Cloud】微服务通信概述
  • MySQL的概述与安装
  • 《被讨厌的勇气》书摘2
  • 基于SpringBoot的会员制医疗预约服务管理信息系统
  • 【二十三】【算法分析与设计】三柱汉诺塔详解,计算子移动次数,正常递归计算,观察数据得出数学规律,递归图得出数学规律,将递归函数转化为递推式
  • C# WPF编程-XAML
  • java 高级面试题(借鉴)(下)
  • C++测试代码
  • Flask python 开发篇:蓝图的使用
  • 抖音视频爬虫下载软件|可导出视频分享链接|视频批量采集工具
  • CentOS DHCP服务器部署指南
  • llvm后端
  • 【JSON2WEB】10 基于 Amis 做个登录页面login.html
  • Android 你遇到的无障碍onGesture不执行
  • Java学习10
  • 第二十章 TypeScript(webpack构建ts+vue3项目)
  • 白酒:陈酿过程中的老熟度评价与品质提升方法