1.类的加载机制(static关键字啥时候被加载的)
1加载:加载指的是JVM读取Class文件。并根据Class文件描述创建java.lang.class对象的过程,
将需要加载的Class文件加载到运行时的方法区,在堆中创建java.lang.class对象,并封装类在方法去的数据结构,读取时可以通过JAR包,WAR包读取。
2验证:确保当前的Class符合当前虚拟机的需求,保障虚拟机的自身安全,只有通过验证的Class文件才能被JVM加载。
1.文件格式验证
2.元数据验证
3.字节码验证:通过数据流和控制流分析,确定程序语义是合法的、符合逻辑的。
4.符号引用验证:确保解析动作能正确执行。
3准备:在方法区中为变量分配空间并设置类的初始值。非final的静态变量在准备阶段的初始值是0,赋值是初始化的时候进行的,如果加上final的变量会直接在准备阶段被赋值。
4.JVM
JVM会将常量池中的引用符号替换为直接应用。
5.初始化
主要通过执行类构造器的方法将类初始化。
2.equals和==的区别:
1.对于==来谈。
如果比较的是基本数据类型变量,比较两个变量的值是否相等。(不一定数据类型相同)
如果比较的是引用数据类型变量,比较两个对象的地址值是否相同,即两个引用是否指向同一个地址值
2.对于equals()来谈。
如果类中重写了equals方法,比较内容是否相等。
String、Date、File、包装类都重写了Object类的equals方法。
如果类中没有重写equals方法,比较地址值是否相等
socket
泛型
项目细节(线程创建,数据库,网络编程)
堆排序