java基础 之 了解final

本篇文章代码就不附上了,建议大家实际敲一敲,更能加快理解

定义

  • final表示”最后的,最终的“含义,变量一旦赋值后,不能被重新赋值(不然不符合最终的规则了)。
  • 声明final方法的主要目的是防止该方法的内容被修改
  • 被final修饰的实例变量必须显示指定初始值
  • final修饰符通常和static修饰符一起使用来创建类变量
    戳这里→回顾static关键字

使用及规则

修饰类

1、 被final修饰的类,不能被继承

2、 如果一个类被设置为final修饰,则该类中的所有方法默认为final方法

3、 因为final不能被继承(自然也不能重写),所以final不能和abstract(抽象关键字)并存
在这里插入图片描述

4、 final类中不允许有任何抽象方法(即方法被abstract修饰)
在这里插入图片描述

修饰方法

修饰变量

  • 1、final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值:
    (1)对于基本数据类型:final修饰的不可变指的是数值不可变
    (2)对于引用数据类型:final修饰的不可变指的是保存的地址值不可变,但是对象的内容是可以改变的

  • 2、通常由final定义的变量称为常量

  • 3、final关键字定义的变量必须在声明的时候对其进行赋值操作(成员变量和局部变量有差别)

修饰成员变量

在这里插入图片描述

说明:出现编译错误,是因为变量habit未进行初始化

  • 方法一:在声明的时候直接赋值
    在这里插入图片描述
  • 方法二:使用构造方法进行赋值
    在这里插入图片描述

    需要注意的是,在构造方法中赋值后,这个类是不能生成setter方法的

  • 方法三:在代码块中赋值
    在这里插入图片描述

修饰局部变量

  • 保证在使用之前被初始化就可以了

final与static共同修饰变量

  • 被final和static共同修饰的变量,初始化方法有两种:
    • 1、声明时即赋值(与上边相同)
    • 2、在静态代码块中初始化(注意与非静态变量的区分)
      在这里插入图片描述

final修饰的变量和普通变量的区别

  • finla变量和普通变量的优化:
    • 1、当final变量是基本数据类型及String类型时,如果在编译期间能知道它的确切值,编译器会把它当做编译器常量使用

      (如str、b0),当用到该final变量时,相当于直接访问的是这个常量(即它的值),不需要在运行时确认。

    • 2、普通变量,在用到时,依然需要链接去访问
      在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值