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;
不是同一个对象,因为他们不属于同一个类。
附图: