Java初始化大乱斗

1.先了解static

  • 归类所有,只初始化一次,并且当类加载的时候才开始初始化
  • 修饰变量 所有该类的对象共享一个静态变量
  • 修饰方法 直接用类名调用即可
  • 能不能在main方法内写static int a =3;? 不能

2.大乱斗(了解这道题,即明白Java初始化)

public class InitializeDemo {
    private static int k = 1;
    private static InitializeDemo t1 = new InitializeDemo("t1");
    private static InitializeDemo t2 = new InitializeDemo("t2");
    private static int i = print("i");
    private static int n = 99;

    {
        print("初始化块");
        j=100;
    }

    public InitializeDemo(String str) {
        System.out.println((k++) + ":" + str + "   i=" + i + "    n=" + n);
        ++i;
        ++n;

    }
    static {
        print("静态块");
        n=100;
    }
    private int j = print("j");
    public static int print(String str) {
        System.out.println((k++) + ":" + str + "   i=" + i + "    n=" + n);
        ++n;
        return ++i;
    }

    public static void main(String[] args) {
        System.out.println("aaaa");
        InitializeDemo test = new InitializeDemo("test");
    }

}


  1. 首先要先加在main所在类中所有静态
  2. 执行 private static int k = 1;静态量
  3. 先执行InitializeDemo test = new InitializeDemo(“t1”);,之后加载类,先加载静态量和静态块
  4. 再执行 private static InitializeDemo t1 = new InitializeDemo(“t2”);静态量
  5. 因为在初始化了该类,所以执行初始化块和构造方法
  6. { print(“初始化块”); j=100;}
  7. 然后执行private int j = print(“j”);
  8. 在执行构造函数
  9. 挨个执行每条静态语句
  10. 当 执行完private static int n = 99;后该执行静态块
  11. 然后是初始化块,再是 private int j = print(“j”);最后只执行构造函数
  12. 最后执行main中,InitializeDemo test = new InitializeDemo(“test”);
  13. 流程结束

注意一定先是初始化main所在类的静态,然后再执行main
结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/9abd97a908ee447e8f9fb133b22b8f0c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQOmAvui2ig==,size_20,color_FFFFFF,t_70,g_se,x_16

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值