【Java】static关键字详解

一、静态变量

由static修饰的变量
静态变量:在访问时可通过类名.方法名对象.方法名进行访问,静态的变量对于类而言,在内存中只有一个,能被所有的类的实例去共享,所以如果想要所有的类去访问时,可以把变量设置为static。
非静态变量:在访问时须通过对象名.方法名进行访问。
在这里插入图片描述

二、静态方法

1)调用形式

非静态方法的调用形式:对象.方法名不能类名.方法名或者直接写方法名
静态方法的调用形式:类名.方法名方法名对象.方法名

在这里插入图片描述
2)非静态方法可以调用静态方法,但静态方法不能调用非静态方法,因为静态方法随着类的加载而加载。
*在这里插入图片描述

三、静态代码块**

1)代码块分类

匿名代码块:随对象的创建而创建,用于赋初值;
静态代码块:由static修饰,加载初始化数据,随类加载执行,只执行一次

2)执行顺序

  静态代码块→匿名代码块→构造方法
在这里插入图片描述
在这里插入图片描述

3)静态代码块只执行一次

在这里插入图片描述
在这里插入图片描述

四、例题

public class Demo01 {
    static int cnt = 6;
    static {
        cnt += 9;
    }
    public static void main(String[] args) {
        System.out.println("cnt="+cnt);

    }
    static {
        cnt /=3;
    }
}

程序的输出结果为cnt=5

   原因:静态成员属性和静态代码块的加载时机一样,加载类的时候执行,当有多个静态代码块和静态成员变量时根据声明的先后顺序来执行,main方法作为程序的入口最后执行.
在这里插入图片描述

五、总结

  1. 静态变量和静态方法可直接通过类名直接访问。
  2. 非静态方法可以调用静态方法,但静态方法不能调用非静态方法。
  3. 代码块的执行顺序为静态代码块→匿名代码块→构造方法。
  4. 匿名代码块,随类的加载而创建,用于赋初值;静态代码块随类加载执行,且只被执行一次,用于初始化类。
  5. 静态代码块按照声明的顺序先后执行。

六、参考链接

1、https://www.bilibili.com/video/BV1PP411M7zm/?spm_id_from=333.999.0.0&vd_source=9140dcc493e34a9f4e95ca2f8f71bbd3
2、https://www.bilibili.com/video/BV12J41137hu?p=73&vd_source=9140dcc493e34a9f4e95ca2f8f71bbd3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值