最近研究了一下java的类加载器
		先看一下实例化一个类的几种方法:
		
				1、new
				2、Class.newInstance
				3、clone()
				4、序列化
		
		再看一下加载一个类的几种方法:
		
				1、A a =new A();(单独声明一个类A a,不会促使类加载器加载我们要的类,只有实例化new的时候类加载器才会为我们加载类)
				2、Class.forName(pkg.A); or Class.forName(pkg.A,true|fale,ClassLoader)
				3、classLoader.loadClass(pkg.A);
		
		java的类加载可以分为预先载入和依需求载入,用java -verbose可以看到类的加载顺序
		关于类的初始化(执行static程序段):
		
				1、A a = new A();在类加载的时候即进行初始化
				2、Class.forName(A);在类加载的时候即进行初始化
				3、Class.forName(A,false,classLoader);在newInstance的时候进行初始化
				4、classLoader.loadClass(A);在newInstance的时候进行初始化
		
		再看一下类加载器的分层结构
		
				1、最上层是用c++实现的Bootstrap Loader,sun.boot.class.path
				2、ExtClassloader,搜寻位置为java.ext.dirs(System.geProperty("java.ext.dirs"))
				3、AppClassLoader(也称System Loader),搜寻位置为CLASSPATH
		
		java的类加载器采用(委派模式),即类加载器器先委托父类去加载该类