1、出现的时期不同:Class.forName()在运行时加载;Class.class和getClass()是在编译器加载
2、Class.class只是在编译时用来存放类的相关信息,并没有实例化对象;而getClass()既实例化了对象,又存放了类信息
3、例:
   Test t=new Test();
   Class c=t.getClass();
   
   Class c=Class.class;

Class c=Class.forName("Test");

package com.hsia.util;

public class Test {

Test(){}
    
    private String test;
    
    public String getTest() {
        return test;
    }

public void setTest(String test) {
        this.test = test;
    }
    
    public static void f(Test t)
    {
        System.out.print(t);
    }

public static void main(String[] arg) throws Exception
    {    
        System.out.println(Test.class);
        System.out.println(new Test());
        System.out.println(Test.class.newInstance());
  
        Class clas = null;
        try {
          clas = Class.forName("Test");        //此处必须为完整路径  com.hsia.util.Test
          System.out.println(clas);
        } catch (ClassNotFoundException ex) {
          // handle exception case
        }
        System.out.println(clas);
        
        Test t=new Test();
        System.out.println(t.getClass().newInstance());
        System.out.println(t);
        
        f(t);
    }
}
输出结果:
第一次输出:
class com.hsia.util.Test
com.hsia.util.Test@1df38fd
com.hsia.util.Test@16a786
null
com.hsia.util.Test@1efb836
com.hsia.util.Test@126e85f
com.hsia.util.Test@126e85f

第二次输出:
class com.hsia.util.Test
com.hsia.util.Test@de6ced
com.hsia.util.Test@c17164
null
com.hsia.util.Test@61de33
com.hsia.util.Test@14318bb
com.hsia.util.Test@14318bb

结论:
Test.class:输出类名
new Test():输出类实例的内存物理地址
Test.class.newInstance():输出类实例的内存物理地址
t.getClass().newInstance():输出类实例的内存物理地址
t:也是类实例内存地址

Class.forName、Class.class(属性)、getClass()的区别的更多相关文章

  1. Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别

    一.Java的反射机制   每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图:   其中

  2. .class和.getClass()的区别

    使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类 如: getClass() 返回此 Object 的运行时类. //需要有com.lpx.test.class这个类 Logger ...

  3. js中__proto__, property, prototype, 对象自身属性方法和原型中的属性方法的区别

    __proto__: 这个属性是实例对象的属性,每个实例对象都有一个__proto__属性,这个属性指向实例化该实例的构造函数的原型对象(prototype). proterty:这个方法是对象的属性 ...

  4. 【面试必问】python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别

    [面试必问]python实例方法.类方法@classmethod.静态方法@staticmethod和属性方法@property区别 1.#类方法@classmethod,只能访问类变量,不能访问实例 ...

  5. js中 对象名.属性名和对象名['属性名']的区别,.和[]的区别

    对象中的对象名[ ' 属性名 ' ] 和 对象名.属性名的区别 话不多少,上图分析,菜鸟刚学几个月,如有错误,欢迎大佬们指出 这里是很显而易见的! 然后我们用for in 对他进行遍历,他的区别就出来 ...

  6. Android培训准备资料之UI一些相似控件和控件一些相似属性之间的区别

    这一篇博客主要收集五大布局中的一些相似控件和控件一些相似属性之间的区别 ImageView ImageButton Button 三者有啥区别? (1)Button继承自TextView,ImageV ...

  7. [Vue]method与计算属性computed、侦听器watch与计算属性computed的区别

    一.方法method与计算属性computed的区别 方法method:每当触发重新渲染时,调用方法method将总会再次执行函数: 计算属性computed:计算属性computed是基于它们的响应 ...

  8. CSS 属性选择器 ~=, |=, ^=, $=, *= 的区别

    CSS 属性选择器 ~=, |=, ^=, $=, *= 的区别 总结: "value 是完整单词" 类型的比较符号: ~=, |= "拼接字符串" 类型的比较 ...

  9. .class, class.forName(), getClass()的区别

    类名.class叫做"类字面量",因class是关键字, 所以类名.class编译时确定. getclass()运行时根据实际实例确定,getClass()是动态而且是final的 ...

随机推荐

  1. 用java开发的网站或者程序

    中国移动的官网即其相关业务系统 阿里巴巴.淘宝网 58同城是java做的后台 铁道部12306 腾讯的拍拍网等 各大银行的交互应用系统,比如有的信用卡网银 另外,Android手机的大部分应用,其他智 ...

  2. java_jdbc_可滚动结果集与分页

    public static void create2(int i) { Connection conn = null; Statement st = null; ResultSet rs = null ...

  3. Android_sharePreference

    /** * Android的四中数据存储方式: * 1.SharePreferences * 2.SQLite * 3.Content Provider * 4.File * * SharePrefe ...

  4. 转:Oracle R12 多组织访问的控制 - MOAC(Multi-Org Access Control)

    什么是MOAC MOAC(Multi-Org Access Control)为多组织访问控制,是Oracle EBS R12的重要新功能,它可以实现在一个Responsibility下对多个Opera ...

  5. Linux上在同一端口上共享SSH与HTTPS的工具:SSLH

    添加EPEL源 CentOS 6 # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rp ...

  6. Html5 audio stop

    //html5 stop audio play function stopPlay(el){ el.pause(); el.currentTime = 0; } 使用: var el = docume ...

  7. h2database源码浅析:TransactionMap、MVMap、MVStore

    TransactionStore:A store that supports concurrent MVCC read-committed transactions. TransactionStore ...

  8. PL/SQL在Oracle服务器上连接出错

    今天在Oracle服务器上使用PL/SQL连接Oracle软件的时候出现了错误,错误如下: 具体的解决办法如下: 需要下载32位的Oracle Client,具体的步骤如下:登录Oracle官方网站 ...

  9. 20160503-spring入门2

    使用Spring需要的jar 到http://www.springsource.org/download下载spring,然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下 dist\sp ...

  10. 命令行创建AVD

    1.命令行创建AVD android create avd -n myAvd -t 8 -b armeabi-v7a -p d:\scard.img -s HVGA 2.删除AVD android d ...