1.用到类的时候,类加载到方法区,同时方法区会存放static的内容(包括静态方法和静态变量),随类的加载而加载

2当new的时候,会在堆中创建一个对象,在其中会开辟其中的实例变量内存并初始化,堆中变量默认会被初始化0 null

3当方法运行时,进行压栈push操作,不同方法产生一个栈帧,先进后出原则,局部变量是存放在栈中,方法用完后,弹栈pop

 

以下代码是类在实例时候的一些执行顺序

//class
class Constructors01{
	String name = "bookThree";//实例变量初始化 要优先于构造代码块
	static String jk = "klhd";//静态变量初始化 优先于对象创建
	{
		System.out.println("3My NAME is " +name);//构造代码块,是初始化所有对象的,优先于对象创建(构造函数)
	}
	static {
		System.out.println("1Follow Class  " + jk);//静态代码块,用于初始类的,随类加载而加载
	}
	Constructors01(){
		name = "hah";
		System.out.println("4My name change to "+ name);
	}
}
class Constructors01Child extends Constructors01{
	static{
		System.out.println("2i am a child static");
	}
	{
		System.out.println("5i  am a child object");
	}
	Constructors01Child(){
		System.out.println("6Me too child object");
	}
}

  new一个子类对象时,以上代码顺序可归纳为:

父静态变量
父静态代码块
子静态代码块
父实例变量
父构造代码块
父构造函数
子构造代码块
子构造函数

  

 

相关文章:

  • 2021-08-22
  • 2021-12-27
  • 2022-01-08
  • 2021-11-14
  • 2021-12-15
  • 2021-09-30
  • 2021-09-20
  • 2021-12-17
猜你喜欢
  • 2022-12-23
  • 2022-01-16
  • 2021-04-17
  • 2021-04-20
  • 2022-01-13
  • 2021-12-12
  • 2022-12-23
相关资源
相似解决方案