EKT Java企业级关键技术强化 Enterprise Edition

EKT enterprise key techlology 企业关键技术

本章目标:

1.理解Class类

2.理解JAVA类加载体系结构

3.理解类的加载过程

1Class对象由JVM自动产生,每当一个类被加载时,JVM就自动为其生成一个Class对象,通过Class对象可以获得类的相关信息。 2将类信息读到内存中过程,称为类加载

获得类的基本信息的常用方法:

1getName() 获得类名 2getPackage() 获得包名 3isInterface() 是否为接口 4isPrimitive() 是否为基本类型 5isArray() 是否为数组 6getSuperclass() 获得父类的Class对象

class与类加载:

Java在需要使用某个类时,才会将该类进行加载,而不是在程序启动时就加载所有的类。

有6种情况,JVM会加载Class对象

1一、使用new关键字创建对象时。 2二、通过反射创建对象时。 3三、调用某个类的static方法时。 4四、调用某个类的static属性时。 5五、当初始化某个类的子类时。 6六、某个类标明为main() 函数类(启动类) 。

部分代码展示:

1public class Demo1 { 2 public static void main(String[] args) { 3 String str=new String("Hello tty!"); 4 5 //1.getClass(); 6 Class c1=str.getClass(); 7 8// getName() 获得类名 9 System.out.println("1.获得类名:"+c1.getName()); 10 11 System.out.println("*******************"); 12 13// getPackage() 获得包名 14 System.out.println("2.获得包名:"+c1.getPackage()); 15 16 System.out.println("*******************"); 17 18// isInterface() 是否为接口 19 System.out.println("3.是否为接口:"+c1.isInterface()); 20 21 System.out.println("*******************"); 22 23// isPrimitive() 是否为基本类型 24 System.out.println("4.是否为基本类型:"+c1.isPrimitive()); 25 26 System.out.println("*******************"); 27 28// isArray() 是否为数组 29 System.out.println("5.是否为数组:"+c1.isArray()); 30 31 System.out.println("*******************"); 32 33// getSuperclass() 获得父类的Class对象 34 System.out.println("6.获得父类的Class对象:"+c1.getSuperclass()); 35 36 System.out.println("*******************"); 37 38 //2. class 39 Class c2=String.class; 40 41// getName() 获得类名 42 System.out.println("1.获得类名:"+c2.getName()); 43 44 System.out.println("*******************"); 45 46// getPackage() 获得包名 47 System.out.println("2.获得包名:"+c2.getPackage()); 48 49 System.out.println("*******************"); 50 51// isInterface() 是否为接口 52 System.out.println("3.是否为接口:"+c2.isInterface()); 53 54 System.out.println("*******************"); 55 56// isPrimitive() 是否为基本类型 57 System.out.println("4.是否为基本类型:"+c2.isPrimitive()); 58 59 System.out.println("*******************"); 60 61// isArray() 是否为数组 62 System.out.println("5.是否为数组:"+c2.isArray()); 63 64 System.out.println("*******************"); 65 66// getSuperclass() 获得父类的Class对象 67 System.out.println("6.获得父类的Class对象:"+c2.getSuperclass()); 68 69 70 System.out.println(c1==c2); 71 //得出结论: 72 //a.一个类的类对象是唯一的 73 //b.如果已知对象的实例可以通过getClass()得到类对象 74 //c.如果已知类型,可以通过class得到类对象 75 76 77 } 78 79}

效果图展示:

心得与感悟:

学习的过程解决自己的解惑,让自己不断地进步,学习是痛苦并快乐着的,每天的日子都感觉很充实,我相信未来的我一定会感谢现在拼搏的自己。
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java中6种创建对象的方式

1、使用关键字new创建对象java//无参构造Testtest1newTest();//有参构造Testtest2newTest("小明",18);new对象过程中,底层发生了什么?1.类加载JVM检查先是否已经加载,没有则执行类加载过程2.声明类型引用声明一个Test类型的引用test3.堆内存分配类加载步骤中已确定对象所需

java锁学习(二)

类锁类锁!!!!java类有很多对象,但是只有一个class对象!!!!所以,类锁,就是针对当前类的Class对象的锁类锁同一时刻只能被一个对象获取1.synchronized放在static方法上(静态锁)2.synchronized放在class对象上静态锁classSyncClassSt

java类的加载与加载器

java代码在计算机中经历的三个阶段:1.Source源代码阶段(代码还是在硬盘上,并没有进入内存)  Student.java通过javac编译Student.class字节码文件2.类加载器ClassLoader将字节码文件加载进入内存,成为Class类对象(成员变量Field\\fields、构造方法Const

图文详解,史上最全【类加载子系统】解说!!

内存结构概述简图详细图英文版中文版注意:方法区只有HotSpot虚拟机有,J9,JRockit都没有如果自己想手写一个Java虚拟机的话,主要考虑哪些结构呢?1.类加载器2.执行引擎类加载器子系统类加载器子系统作用:1.类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。2.ClassLo

java虚拟机(三)

普通对象的创建(不包括数组和class对象):当虚拟机遇到new指令时,会在常量池中检查是否包含这个类的符号引用(全限定名),通过这个确定是否经过类加载的过程,如果true,为该对象分配内存,对象大小在类加载过程就已经确定。如果false,需要进行类加载。分配内存1、分配内存的方式:指针碰撞:如果内存