JAVA中静态变量及类加载顺序

1、静态变量、非静态变量的区别

①java类的成员变量有俩种:

 一种是被static关键字修饰的变量,叫类变量或者静态变量
 另一种没有static修饰,为成员变量

通俗点说:
类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。
而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。

2、静态变量的使用

静态变量是属于类级别的,不需要创建对象就可以直接使用.
全局唯一,内存中唯一,静态变量可以唯一标识某些状态.
在类加载时候初始化,常驻在内存中,调用快捷方便.
应用场景:

  1. 静态方法最适合工具类中方法的定义;比如文件操作,日期处理方法等.
  2. 静态方法适合入口方法的定义;如单例模式,因为从外部拿不到构造函数,所有定义一个静态的方法获取对象非常有必要.
  3. 静态变量适合全局变量的定义.(如布尔型静态成员变量做控制符)

JAVA中初始化的顺序

JAVA中初始化的顺序:
- 加载类;
- 静态变量初始化;
-静态块;【其只能调度静态的,不能调度非静态的】
-成员变量;
-构造方法;

静态变量的缺陷

(1)静态方法不能调用非静态的方法和变量.(非静态方法可以任意的调用静态方法/变量,因为是类的变量,所有类中的所有方法、实例都共享)
(2)不能使用this和super关键字(属于类级别,没有创建对象前不可用this/super)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值