### 1.i = i++自增变量
https://blog.csdn.net/qq_42999092/article/details/109068522
### 2.类初始化和实例初始化等
加载顺序:
这1、2两者看谁的代码在前面就先执行哪一个
{
1.父类静态变量 5
2.父类静态代码块 1
}
3.子类静态变量 10
4.子类静态代码块 6
实例初始化:
5.子类的supper() 执行的是{}中的内容
{
6.父类supper()
这7、8两者看谁的代码在前面就先执行哪一个
{
7.父类非静态实例变量 i = test()因为涉及到子类方法的重写所以是9(not 4)
8.父类非静态代码块 3
}
9.父类无参构造 2
}
10.子类非静态实例变量 i = test() 9
11.子类非静态代码块 8
12.子类无参构造 7
3.方法的参数传递机制
4.成员变量、局部变量
怎么说呢:
1.static int s;为成员变量也就是类信息所以存在于方法区中,而类信息随着类消亡而消亡的概念可知:一共执行了5次s++所以s=5.
2.int i; int j;为实例变量所以在堆中,实际上obj1.test()操作的是 int i = 0、int j = 0
{
由于obj1.test()的i执行了两次所以i在堆中执行了两次为2 i=2,而int j是局部变量在栈中所以操作的值没有变化 j = 1
由于obj2.test()的i执行了1次所以i在堆中执行了一次为1 i=1,而int j是局部变量在栈中所以操作的值没有变化 j = 1
}