JVM是如何判断这三个Class对象其实是一个Class对象呢?

JVM根据两个方面判断:一是类的全称;另一个是类加载器.

根据上篇博客中的结果得出:类的全称是相同的.那类加载器是否相同呢?即使类的全称相同,而使用的加载器不同,那Class对象也是不同的.那我们继续上篇博客中的例子,看看所使用的加载器的结果如何呢?其中使用getClassLoad()方法.

[java]
  1. /**
  2. * @author:
  3. * 文件名:TestClass.java
  4. * 时间:2012-2-6上午10:01:52
  5. */
  6. public class TestClass {
  7. public  static void main(String[] args)
  8. {
  9. try {
  10. //测试Class.forName()
  11. Class testTypeForName=Class.forName("TestClassType");
  12. System.out.println("testForName---"+testTypeForName);
  13. //测试类加载器
  14. System.out.println("forName形式的加载器--"+testTypeForName.getClassLoader());
  15. //测试类名.class
  16. Class testTypeClass=TestClassType.class;
  17. System.out.println("testTypeClass---"+testTypeClass);
  18. //测试类加载器
  19. System.out.println(".class形式的加载器---"+testTypeClass.getClassLoader());
  20. //测试Object.getClass()
  21. TestClassType testGetClass= new TestClassType();
  22. System.out.println("testGetClass---"+testGetClass.getClass());
  23. //测试类加载器
  24. System.out.println("getClass形式的加载器--"+testGetClass.getClass().getClassLoader());
  25. } catch (ClassNotFoundException e) {
  26. // TODO Auto-generated catch block
  27. e.printStackTrace();
  28. }
  29. }
  30. }
  31. class TestClassType{
  32. //构造函数
  33. public TestClassType(){
  34. System.out.println("----构造函数---");
  35. }
  36. //静态的参数初始化
  37. static{
  38. System.out.println("---静态的参数初始化---");
  39. }
  40. //非静态的参数初始化
  41. {
  42. System.out.println("----非静态的参数初始化---");
  43. }
  44. }

结果如下:

观察结果发现:三种形式的加载器是相同的.

JVM首先判断内存中是否已经加载该类。

转载于:https://www.cnblogs.com/zhangyoushugz/archive/2012/11/06/2757284.html

JVM如何判断类相同相关推荐

  1. 【JVM】Java类的加载流程以及双亲委派,全盘托管,以及如何打破双亲委派机制

    JVM基础生命周期流程图 只有main()方法的java程序执行流程 classLoader.loadClass()的类加载流程(除引导类,所有类都一样) 加载:通过IO查找读取磁盘上的字节码文件,在 ...

  2. JVM如何判断哪些对象可以回收?

    今天在家本来是闲暇的一天,很舒适,结果这个时候,妈妈敲门进来我房间了,咨询我有没有时间帮忙打扫一下父母的房间:(没有时间 当然我不能这么说了,我是个炒鸡孝顺的好孩子,当然了,妈妈,当然有时间了啊,no ...

  3. php 判断类存在,PHP怎么判断类是否存在

    PHP怎么判断类是否存在 发布时间:2020-06-24 14:40:43 来源:亿速云 阅读:100 作者:Leah PHP怎么判断类是否存在?针对这个问题,这篇文章给出了相对应的分析和解答,希望能 ...

  4. php检测类是否存在,php判断类是否存在函数class_exists用法分析

    本文实例分析了php判断类是否存在函数class_exists用法.分享给大家供大家参考.具体如下: 如果我们要判断一个类是不是可以用,可以先使用class_exists函数来判断一下,下面来看几个例 ...

  5. python 判断类是否存在某个属性或方法

    python 判断类是否存在某个属性或方法 #!/usr/bin/env python # -*- coding:utf-8 -*- #@Time : 2020/5/3 0003 12:47 #@Au ...

  6. 【深入理解JVM】Java类文件的基本结构

    Java类文件(.class文件)是一个为已编译Java程序仔细定义的格式.Java源代码被编译成能够被任何JVM加载和执行的类文件.在被JVM加载之前,类文件可能是由网络传输而来. 类文件是独立于底 ...

  7. Java判断类和实例的关系

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  8. C++ 判断类是否有某变量

    C++ 判断类是否有某变量 话不多说上代码. #define HAS_MEMBER(member)\template<typename T, typename... Args>struct ...

  9. php检查函数是否存在,php判断类是否存在函数class_exists用法分析

    本文实例分析了php判断类是否存在函数class_exists用法.分享给大家供大家参考.具体如下: 如果我们要判断一个类是不是可以用,可以先使用class_exists函数来判断一下,下面来看几个例 ...

最新文章

  1. 防止ASP.NET按钮多次提交代码
  2. 微信公众号可快速创建“门店小程序” 不用开发
  3. 英巴卡迪诺新年战略:支持Linux提供中文手册
  4. 数据结构Java11【图结构概述、图遍历原理(BFS\DFS)、图遍历代码实现】
  5. ☆☆在Eclipse中编译NDK的so文件(普通安卓项目转换为NDK项目的设定)
  6. 2 操作系统第一章 操作系统体系结构、中断和异常、系统调用
  7. 动态创建数据表php,PHP实现动态添加XML中数据的方法
  8. numpy 基础 —— np.linalg
  9. 80004005错误代码_WIN7错误代码0×80004005图文解决教程
  10. Anton and currency you all know
  11. 超七成阅读APP都借百度语音技术促用户增长
  12. SQLStudio下载
  13. 夜曲编程python_夜曲编程app免费版下载-百词斩夜曲编程下载v1.0.0安卓版-西西软件下载...
  14. 两个程序员(Chris和Steve)的故事
  15. 父亲节别忘了妈:带上全家去旅行
  16. 模仿淘宝手机号码输入框
  17. Python统计函数耗时的方法
  18. P不能做div的父元素?
  19. 私域流量运营团队社群SOP流程计划
  20. java计算机毕业设计中小学生错题管理系统源程序+mysql+系统+lw文档+远程调试

热门文章

  1. 华南师范大学:迈向智慧校园的“极简”之路
  2. 大文件表空间+创建大文件表空间+查询数据库表空间类型信息+查询数据库表空间类型信息...
  3. 从头开始搭建一个mybatis+postgresql平台
  4. 关于C语言,C程序员的我想说两句...
  5. 从零开始学_JavaScript_系列(22)——dojo(9)(表单、JsonRest的post方法,widget的使用思路)...
  6. 【原创】基于NIOS II的ADS1256 SPI驱动
  7. axios post object object_Vue前端开发——数据交互axios
  8. tgp饥荒 服务器无响应,饥荒TGP版常见运行问题有哪些_TGP版礼包领取及邀请添加好友方法详解_快吧单机游戏...
  9. Linux之文件系统介绍
  10. java系列2:方法的重载