package ClassTest;
public class TestClass {
public static void main(String[] args) {
try {
// 测试.class
@SuppressWarnings("rawtypes")
Class testTypeClass = TestClassType.class;
System.out.println("testTypeClass---" + testTypeClass);
// 测试Class.forName()
@SuppressWarnings("rawtypes")
Class testTypeForName = Class.forName("ClassTest.TestClassType");
System.out.println("testTypeForName---" + testTypeForName);
// 测试Object.getClass()
TestClassType testTypeGetClass = new TestClassType();
System.out.println("testTypeGetClass---"
+ testTypeGetClass.getClass());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package ClassTest;
public class TestClassType {
// 构造函数
public TestClassType() {
System.out.println("----构造函数---");
}
// 静态的参数初始化
static {
System.out.println("---静态的参数初始化---");
}
// 非静态的参数初始化
{
System.out.println("----非静态的参数初始化---");
}
}
testTypeClass---class ClassTest.TestClassType
---静态的参数初始化---
testTypeForName---class ClassTest.TestClassType
----非静态的参数初始化---
----构造函数---
testTypeGetClass---class ClassTest.TestClassType
今天在看JDK中Integer.java的源码时,发现Integer.TYPE这么一个东西,
public static final Class TYPE = (Class ) Class.getPrimitiveClass("int");
根据JDK文档的描述,Class.getPrimitiveClass("int") 方法返回的是int类型的Class对象,可能很多人会疑惑,int不是基本数据类型吗?为什么还有Class对象啊?
然后在网上搜寻一番之后,总结一下搜寻的结果:
有9个预先定义好的Class对象代表8个基本类型和void,它们被java虚拟机创建,和基本类型有相同的名字boolean, byte, char, short, int, long, float, and double.public class IntClasses {
public static void main(String[] args) {
Class a = int.class;
Class b = Integer.TYPE;
Class c = Integer.class;
System.out.println(System.identityHashCode(a));
System.out.println(System.identityHashCode(b));
System.out.println(System.identityHashCode(c));
}
}
366712642
366712642
1829164700
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |