EKT enterprise key techlology 企业关键技术
本章目标:
1.理解Class类
2.理解JAVA类加载体系结构
3.理解类的加载过程
Class对象由JVM自动产生,每当一个类被加载时,JVM就自动为其生成一个Class对象,通过Class对象可以获得类的相关信息。
将类信息读到内存中过程,称为类加载
获得类的基本信息的常用方法:
getName() 获得类名
getPackage() 获得包名
isInterface() 是否为接口
isPrimitive() 是否为基本类型
isArray() 是否为数组
getSuperclass() 获得父类的Class对象
class与类加载:
Java在需要使用某个类时,才会将该类进行加载,而不是在程序启动时就加载所有的类。
有6种情况,JVM会加载Class对象
一、使用new关键字创建对象时。
二、通过反射创建对象时。
三、调用某个类的static方法时。
四、调用某个类的static属性时。
五、当初始化某个类的子类时。
六、某个类标明为main() 函数类(启动类) 。
部分代码展示:
public class Demo1 {
public static void main(String[] args) {
String str=new String("Hello tty!");
//1.getClass();
Class c1=str.getClass();
// getName() 获得类名
System.out.println("1.获得类名:"+c1.getName());
System.out.println("*******************");
// getPackage() 获得包名
System.out.println("2.获得包名:"+c1.getPackage());
System.out.println("*******************");
// isInterface() 是否为接口
System.out.println("3.是否为接口:"+c1.isInterface());
System.out.println("*******************");
// isPrimitive() 是否为基本类型
System.out.println("4.是否为基本类型:"+c1.isPrimitive());
System.out.println("*******************");
// isArray() 是否为数组
System.out.println("5.是否为数组:"+c1.isArray());
System.out.println("*******************");
// getSuperclass() 获得父类的Class对象
System.out.println("6.获得父类的Class对象:"+c1.getSuperclass());
System.out.println("*******************");
//2. class
Class c2=String.class;
// getName() 获得类名
System.out.println("1.获得类名:"+c2.getName());
System.out.println("*******************");
// getPackage() 获得包名
System.out.println("2.获得包名:"+c2.getPackage());
System.out.println("*******************");
// isInterface() 是否为接口
System.out.println("3.是否为接口:"+c2.isInterface());
System.out.println("*******************");
// isPrimitive() 是否为基本类型
System.out.println("4.是否为基本类型:"+c2.isPrimitive());
System.out.println("*******************");
// isArray() 是否为数组
System.out.println("5.是否为数组:"+c2.isArray());
System.out.println("*******************");
// getSuperclass() 获得父类的Class对象
System.out.println("6.获得父类的Class对象:"+c2.getSuperclass());
System.out.println(c1==c2);
//得出结论:
//a.一个类的类对象是唯一的
//b.如果已知对象的实例可以通过getClass()得到类对象
//c.如果已知类型,可以通过class得到类对象
}
}
效果图展示:
心得与感悟:
学习的过程解决自己的解惑,让自己不断地进步,学习是痛苦并快乐着的,每天的日子都感觉很充实,我相信未来的我一定会感谢现在拼搏的自己。