Java关键字:static、final,non static class区别

一、static

  1. 被static修饰的成员变量和成员方法独立于该类的任何对象:不依赖于类特定的实例,被类的所有实例共享
  2. static对象可以在它的任何对象创建之前访问,无需引用任何对象:只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内找到它们
  3. public static本质上是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量

(一)static class与non static class的区别

静态对象非静态对象
拥有属性类共同拥有的类各对象独立拥有的
内存分配内存空间上是固定的空间在各个附属类里面分配
分配顺序先分配静态对象的空间再对非静态对象分配空间
注!初始化顺序:先静态后非静态

(二)Java静态对象的好处

  1. 静态对象的数据在全局是唯一的,一改都改
    若是想要处理的东西是整个程序中唯一的,设置为静态是个好方法。非静态的东西修改后只是修改了它自己的数据,不会影响其他同类对象的数据
  2. 引用方便
    直接用类名.静态方法名类名.静态变量名就可引用并且直接可以修改其属性值,不用get和set方法
  3. 保持数据的唯一性
    此数据全局都是唯一的,修改它的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。有效减少多余的浪费
  4. static final用来修饰成员变量和成员方法,可简单理解为“全局常量
    对于变量,表示一旦给值就不可修改;对于方法,表示不可覆盖

二、final

静态变量、实例变量和局部变量,分别表示三种类型的常量(修饰的)

  1. final类:不能被继承、重写,没有子类,final类中的所有方法默认为final的
  2. final方法:不能被子类方法覆盖,但可以被继承(不可以被重写,但可以重载)
  3. final变量:即为常量,值不可变;基本数据类型变量:初始化后值不可变;引用类型:初始化后不能再让其指向另一个对象
  4. final对象:值可变,引用不变
  5. final:不能用于修饰构造方法
  6. private不能被子类方法覆盖,private类型的方法默认是final类型的

final空白:final变量定义时,可以先声明,但不给初值;无论什么情况,编译器都能确保空白final在使用之前必须被初始化

三、static final

用来修饰成员变量和成员方法,可以理解为“全局变量

  1. 变量:值不可修改,类名可直接访问
  2. 方法:不可覆盖,类名可直接访问

:被static和final修饰的实例变量,本身不能再改变;但,一些容器类型(如,ArrayList、HashMap)的实例变量,不可以改变容器变量本身,可以修改容器中存放的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值