### Class类 `class`是由JVM在执行过程中动态加载的。JVM在第一次读取到一种`class`类型时,将其加载进内存。 每加载一种`class`,JVM就为其创建一个`Class`类型的实例,并关联起来。注意:这里的`Class`类型是一个名叫`Class`的`class`。 由于JVM为每个加载的`class`创建了对应的`Class`实例,并在实例中保存了该`class`的所有信息,包括类名、包名、父类、实现的接口、所有方法、字段等,因此,如果获取了某个`Class`实例,我们就可以通过这个`Class`实例获取到该实例对应的`class`的所有信息。 这种通过`Class`实例获取`class`信息的方法称为反射(Reflection)。 如何获取一个`class`的`Class`实例?有三个方法: 方法一:直接通过一个`class`的静态变量`class`获取 ```java Class cls = String.class; ``` 方法二:如果我们有一个实例变量,可以通过该实例变量提供的`getClass()`方法获取 ```java String s = "Hello"; Class cls = s.getClass(); ``` 方法三:如果知道一个`class`的完整类名,可以通过静态方法`Class.forName()`获取 ```java Class cls = Class.fromName("java.lang.String"); ``` 因为`Class`实例在JVM中是唯一的,所以,上述方法获取的`Class`实例是同一个实例。