温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中Class对象生成原理

发布时间:2021-08-30 22:59:10 来源:亿速云 阅读:389 作者:chen 栏目:编程语言

这篇文章主要讲解了“Java中Class对象生成原理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中Class对象生成原理”吧!

Class对象的生成方式如下:

1.Class.forName("类名字符串")

2.类名.class

3.实例对象.getClass()

通过一段小程序,来观察一下Class对象的生成的原理。

/**   * 2012-2-6   * Administrator   */ /**   * @author: 梁焕月    * 文件名:TestClass.java    * 时间:2012-2-6上午10:01:52     */ public class TestClass {  public  static void main(String[] args)  {  try {  //测试Class.forName()  Class testTypeForName=Class.forName("TestClassType");          System.out.println("testForName---"+testTypeForName);  //测试类名.class  Class testTypeClass=TestClassType.class;  System.out.println("testTypeClass---"+testTypeClass);  //测试Object.getClass()  TestClassType testGetClass= new TestClassType();  System.out.println("testGetClass---"+testGetClass.getClass());  } catch (ClassNotFoundException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  }  }   class TestClassType{  //构造函数  public TestClassType(){  System.out.println("----构造函数---");  }  //静态的参数初始化  static{  System.out.println("---静态的参数初始化---");  }  //非静态的参数初始化  {  System.out.println("----非静态的参数初始化---");  }          }

测试的结果如下:

---静态的参数初始化---

testForName---class TestClassType

testTypeClass---class TestClassType

----非静态的参数初始化---

----构造函数---

testGetClass---class TestClassType

根据结果可以发现,三种生成的Class对象一样的。并且三种生成Class对象只打印一次“静态的参数初始化”。

我们知道,静态的方法属性初始化,是在加载类的时候初始化。而非静态方法属性初始化,是new类实例对象的时候加载。

因此,这段程序说明,三种方式生成Class对象,其实只有一个Class对象。在生成Class对象的时候,首先判断内存中是否已经加载。

所以,生成Class对象的过程其实是如此的:

当我们编写一个新的java类时,JVM就会帮我们编译成class对象,存放在同名的.class文件中。在运行时,当需要生成这个类的对象,JVM就会检查此类是否已经装载内存中。若是没有装载,则把.class文件装入到内存中。若是装载,则根据class文件生成实例对象。

感谢各位的阅读,以上就是“Java中Class对象生成原理”的内容了,经过本文的学习后,相信大家对Java中Class对象生成原理这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI