java中 类和对象的初始化综合(静态方法顺序等)

本文探讨了Java中类和对象初始化的程序执行顺序,包括类的默认初始化、静态块、对象属性默认初始化、匿名代码块以及构造方法初始化。总结指出,类的初始化在先,且仅在类加载时执行一次,而对象初始化每次创建对象时都会执行相同流程。通过示例代码和运行结果,读者可以清晰理解这一过程。

类和对象同时初始化时的程序执行顺序

  • 1 类的默认初始化
  • 2 静态块初始化
  • 3 对象属性的默认初始化
  • 4 匿名代码块初始化
  • 5 构造方法初始化

总结
先类的初始化 再对象的初始化
类的初始化只走一次 对象的初始化每次生成对象都要走一遍相同的流程

下面举个栗子 直接看代码

public class Demo3 {
	//分别定义了类变量和实例变量
	static int num1 = 100;
	int num2 = 100;
	//静态代码块
	static {
		System.out.println("静态块开始 num1-->" + num1);

		num1++;
		System.out.println("静态块结束 num1-->" + num1);

	}
	// 构造方法
	public Demo3() {
		System.out.println("--构造方法---");
		num2--;
		num1++;
		
	}

	//匿名代码块
	{
		System.out.println("匿名块开始  num1-->" + num1);
		System.out.println("        num2-->" + num2);
		num2 = 1000;

		System.out.println("匿名块结束  num1-->" + num1);
		System.out.println("        num2-->" + num2);
	}


	public static void main(String[] args) {

		Demo3 demo3 = new Demo3();

		System.out.println("num1-->" + demo3.num1);
		System.out.println("num2-->" + demo3.num2);
		System.out.println();
		
		System.out.println("--------demo4----------------");
		System.out.println("--静态只走一次");
		System.out.println("静态变量的本次结果作为下一次的初值出现");
		//num1的初值为102
		Demo3 demo4 = new Demo3();
		System.out.println("num1-->" + demo3.num1);
		System.out.println("num2-->" + demo3.num2);//103

	}
}

就不多说了 注释和运行结果一目了然

运行结果如下

静态块开始 num1-->100
静态块结束 num1-->101
匿名块开始  num1-->101
        num2-->100
匿名块结束  num1-->101
        num2-->1000
--构造方法---
num1-->102
num2-->999

--------demo4----------------
--静态只走一次
静态变量的本次结果作为下一次的初值出现
匿名块开始  num1-->102
        num2-->100
匿名块结束  num1-->102
        num2-->1000
--构造方法---
num1-->103
num2-->999
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值