外部调用PlayerSdkManager.getInstance():
1、getInstance被加载;“yiyiyi”打印
2、PlayerSdkManagerHolder被使用,因为是静态内部类,所以PlayerSdkManager类被加载;“hahaha”打印
3、sInstance被使用且是静态属性,第一调用,会执行 PlaySdkManager的构造函数。"lalala"打印
另外:
父类的静态代码块->子类的静态代码块->初始化父类的属性值/父类的普通代码块(自上而下的顺序排列)->父类的构造方法->初始化子类的属性值/子类的普通代码块(自上而下的顺序排列)->子类的构造方法。
注:构造函数最后执行。