static关键字详解

静态: static

所有与静态相关,都是用static 修饰

1. static 可以修饰成员变量,不能修饰局部变量
2. static 可以修饰方法
3. static 可以修饰代码块,静态代码块(静态块/静态初始化块)

  • static 修饰的成员变量开辟空间在方法区
    所以就是一份内存空间,任何方法都可以修改这个静态
    变量,一般静态变量做一些公用或共用的计数,要慎用
    ,尽量变量做成局部变量,作用域越小,受干扰的可能性
    就越小.一般情况下static final 共同修饰成员变量
  • static修饰在方法,方法也储存在方法区中
    非静态方法和静态方法在方法区中存储是没有区别的
    都是存储在方法区中,但调用上是有区别的,
    非静态方法被调用,必须先实例化此方法所对应的类的对象
    然后通过对象打点来调用这个非静态方法
    静态方法可以类名直接调用,
    如果想频繁的调用一个方法,这个方法不需要操作某个对象
    的数据时,这个方法最好设置成静态方法
    在静态方法中不能使用this,this属于对象,而不属于类
    静态的属于类,而不属于对象
  • static修饰代码块 static{ }
    代码块就是包含一些代码逻辑,所以静态块还是存储在方法区
    但是静态代码块执行的时机是由区别的;
    能写代码逻辑的地方,方法和静态块和代码块中都可以写代码逻辑
    方法中的代码逻辑是否被执行,取决于程序员是否调用
    静态代码块,在类加载到方法区后,就自动执行静态代码块(且只会执行一次)
    代码块,是在静态代码块后,构造函数前执行
    执行的顺序,先执行静态代码块,然后执行类代码块,然后执行构造函数块
执行顺序详解 :

a. 第一个类加载,执行第一个类的静态代码块
b. 第一个类中包含第二个类作为第一个类的属性(注意,new和不new )

new:第二个类加载,

执行第二个类的静态代码块
new:执行第二个类的类代码块
执行第二个类的构造方法

不new:不加载第二个类

c. 执行第一个类的类代码块,注意c步骤和b步骤的顺序

b在c前, 执行顺序是 a,b,c,d
c在b前,执行顺序是 a,c,b,d

d. 执行第一个类的构造函数

总结:

  • 静态的方法只能访问静态的变量和静态的方法
  • 即,静态的只能访问静态的
  • 非静态的方法可以访问静态变量和静态的方法
  • 也可以访问非静态的方法和非静态的变量
  • 静态的方法即可以用对象调用(不建议),也可以用类名调用(建议)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值