Java中static、final、volatile关键字

1、static

(1)修饰的变量,称为静态变量。

  • 静态变量不依赖实例对象,一旦类被加载,就会被JVM分配 分配存储空间。、
  • 生命周期和类相同,可以通过类名访问。
  • 静态变量被所有该类的对象共享,在内存中只要一个副本。
  • static不能修饰局部变量。

(2)修饰的方法,称为静态方法。

  • 静态方法的访问不依赖对象,只要类被加载,则可以通过类名访问。
  • 静态方法不能访问非静态变量。
  • 修饰类时,只能修饰内部类,外部类不能使用static修饰。

(3)修饰代码块,称为静态代码块

  • static{ }中的代码,常用于类初始化时为静态变量赋值。
static {
    System.out.println(" Hello World");
}

注意:Java中初始化顺序:

  • 父类静态变量--> 父类静态代码块 --> 子类静态变量 --> 子类静态代码块 --> 
  • 父类非静态变量 --> 父类非静态代码块 --> 父类构造方法 -->
  • 子类非静态变量 --> 子类非静态代码块 --> 子类构造方法

(4)只能修饰内部类,称为静态内部类

  • static如果修饰外部类,直接无法编译。
  • 静态内部类只能访问外部类的静态变量和静态方法,即使private修饰的也可以访问。

2、final

  • final修饰变量时,必须初始化或者在构造器中初始化,否则会报错。
  • final修饰的变量时只读的,在多线程中共享是线程安全的。
  • final修饰的方法不可被子类重写。
  • final修饰的类不能被继承。

3、volatile

  • volatile修饰的变量保证了可见性,使得所有线程对该变量的访问 都必须从内存中读取;
  • volatile禁止指令重排序;
  • volatile不能保证原子性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值