反射_1.深入理解Class

1.Class类是什么?

   摘自张孝祥老师PPT:每一个JAVA类都属于同一类事物,描述这类事物的java类就是Class

2.获取类Class的三种方式?

String str = "123";
// 1.使用对象的getClass方法获取
Class c1 = str.getClass();
// 2.使用类.class获取
Class c2 = String.class;
// 3.使用Class类自带的方法,传递类路径加载字节码到内存
Class c3 = null;
try {
     c3 = Class.forName("java.lang.String");
} catch (ClassNotFoundException e) {
   e.printStackTrace();
}
System.out.println(c1 == c2);
System.out.println(c1 == c3);

控制台结果:

  true
  true

3.这三种方式有什么异同吗?

   getClass()方式和xxx.class方式获取都是通过从jvm内存已有的类字节码中创建对象

  而Class.forName("java.lang.String")是通过先去硬盘加载class字节码文件到内存,再从类字节码中创建对象。

  相当于步骤多了一步。

4.常用方法有哪些?

   

c1.newInstance();//创建一个对象
c1.getName();//得到该类对象的名字(即全路径:es:java.lang.String)
c1.getSimpleName();//得到类名(es:String)
c1.getSuperclass();//得到父类

  -_-就先写这么多,其它看看API吧,都很简单

5.Person p1=new Student();其中Student是Person的子类,请问p1.getClass()得到的是Person.class还是Student.class呢?

  答:是Student.class

--------------------------------------------------------------------------------------------------------------------------------------------------

    

--------------------------------------------------------------------------------------------------------------------------------------------------  

 6.Integer.class和int.class是同一个对象吗?为什么?

 System.out.println(Integer.class==int.class); // 结果为false;

 不是同一个对象,因为他们不属于同一个类。

 附图:

  

原文地址:https://www.cnblogs.com/dingjm01/p/8317211.html