JAVA基础篇—— final与static的区别

final与static的区别

一、final关键字

定义
  1. final实例字段必须在构造对象时初始化。即在构造器执行完成之前,将字段赋予初值,否则将不能再修改这个字段。
  2. 每创建一个实例,就会为实例变量分配一次内存。
具体使用
  1. final修饰数据类型(包括类),则应用后的值在实例化后不可再更改。
    final修饰类变量

  2. final修饰类中的方法,则该方法不可被重写,例如父类的方法使用final修饰,继承该类不能对父类中final修饰的方法。
    在这里插入图片描述

  3. final修饰类,则该类不可以被继承
    在这里插入图片描述

二、static关键字

定义

static关键字修饰类的成员与方法都会随着类的加载而分配和加载进内存,而非静态字段与方法只有在实例化时才对成员和方法分配内存。并且static关键字修饰类的成员和方法只加载一次,后面类的实例化都是使用类加载是分配的内存空间

具体使用
  1. static修饰的成员值是可以修改,修饰的方法可以重写(子类重写的方法也要用static修饰)
    在这里插入图片描述
  2. static修饰方法,改方法不可以访问非静态变量,只能访问静态成员
    在这里插入图片描述
    重点静态成员和静态方法,本质上属于类,不属于该类的实例;尽管可以使用实例进行调用,但小编强烈建议采用类名进行调用

三、final与static的区别

  1. final修饰的成员(赋值后不可更改),方法(子类继承后不可更改)、类(该类不可被继承)。static修饰的成员(可以被修改)、方法(可以被重写)。
  2. 加载的时间点不同:final是在new实例时才会被分配和加载内存(每一次实例都会);static是在声明类时间进行的,声明实例时不会再分配和加载,而是所的实例都共用(被static修饰的成员和方法)。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值