day06_ekt_简单介绍
简单介绍
.EKT Java企业级关键技术强化 Enterprise Edition
代码展示:
package demo1; public class Demo1 { /** * @param args */ public static void main(String[] args) { String s = new String("hello"); //1. getClass() Class clz = s.getClass(); System.out.println("类名:" + clz.getName()); System.out.println("包名:" + clz.getPackage()); System.out.println("是否为接口:" + clz.isInterface()); System.out.println("是否为基本类型:" + clz.isPrimitive()); System.out.println("是否为数组:" + clz.isArray()); System.out.println("String类的父类:" + clz.getSuperclass()); //2. class Class clz1 = String.class; System.out.println("类名:" + clz1.getName()); System.out.println("包名:" + clz1.getPackage()); System.out.println("是否为接口:" + clz1.isInterface()); System.out.println("是否为基本类型:" + clz1.isPrimitive()); System.out.println("是否为数组:" + clz1.isArray()); System.out.println("String类的父类:" + clz1.getSuperclass()); System.out.println(clz == clz1); //得出结论: //a.一个类的类对象是唯一的 //b.如果已知对象的实例可以通过getClass()得到类对象 //c.如果已知类型,可以通过class得到类对象 int a = 100; System.out.println(int.class); } }
package work2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Work2 { /** * @param args */ public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try { System.out.print("输入任意类的名字:"); String className = br.readLine(); Class cls = Class.forName(className); // 循环打印父类信息,直到没有父类 while (cls != null) { System.out.println(cls); cls = cls.getSuperclass(); } } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException cnfe) { cnfe.printStackTrace(); } } }
有6种情况,JVM会加载Class对象
一、使用new关键字创建对象时。
二、通过反射创建对象时。
三、调用某个类的static方法时。
四、调用某个类的static属性时。
五、当初始化某个类的子类时。
六、某个类标明为main() 函数类(启动类) 。
类加载器
顾名思义,它就是用来加载Class文件到JVM,以供程序使用的。 JAVA的类加载,都是通过类加载器完成的。
类加载器的创建:
当java运行class文件时,java运行程序会尝试找到JRE安装的所在目录,
然后寻找jvm.dll(默认安装在bin\client目录中) 接着启动JVM 并进行初始化的工作,
产生Bootstrap Loader,Bootstrap Loader会加载Extended Loader和AppClass Loader。
注意:
创建这个项目的时候目录这件千万不要有中文 不然会报错,血一样的教训!!