1.类的加载
1.1 什么类的加载load?(Node类的加载)
答.从硬盘上找到Node.class,解析该文件内容,生成Node类,把Node类的信息存放在内存的方法区
1.2 什么情况下回触发类的加载?并且该类不在内存中
(1)按需加载(懒加载过程)
a.实例化该类的一个对象 new Node(1);
b.使用类的静态属性或者静态方法 Main.merge(…)
c.用到子类,必须要有父类 new CNode
d.先加载父类的静态代码块,再加载子类的静态代码块
1.3 其他规则
静态属性的初始化顺序:
按代码的书写顺序,执行
a.静态属性定义时的初始化
b.静态代码
2.代码块
代码块定义:使用“{}”定义的一段代码;
构造代码块是跟着对象的加载而加载的。
2.1 普通代码块
普通代码块:定义在方法中的代码块;
public class Test1 {
public static void main(String[] args) {
{
//普通代码块
int a=10;
System.out.println(a);
}
int a=20;
System.out.println(a);
}
}
2.2 构造块
构造块:定义在类中的代码块(不加修饰符)
class A{
//定义在类中,不加任意修饰符
{
System.out.println("A的构造块");
}
//构造方法
public A(){
System.out.println(