Class.forName、Class.class(属性)、getClass()的区别
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()的区别的更多相关文章
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
一.Java的反射机制 每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图: 其中
- .class和.getClass()的区别
使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类 如: getClass() 返回此 Object 的运行时类. //需要有com.lpx.test.class这个类 Logger ...
- js中__proto__, property, prototype, 对象自身属性方法和原型中的属性方法的区别
__proto__: 这个属性是实例对象的属性,每个实例对象都有一个__proto__属性,这个属性指向实例化该实例的构造函数的原型对象(prototype). proterty:这个方法是对象的属性 ...
- 【面试必问】python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
[面试必问]python实例方法.类方法@classmethod.静态方法@staticmethod和属性方法@property区别 1.#类方法@classmethod,只能访问类变量,不能访问实例 ...
- js中 对象名.属性名和对象名['属性名']的区别,.和[]的区别
对象中的对象名[ ' 属性名 ' ] 和 对象名.属性名的区别 话不多少,上图分析,菜鸟刚学几个月,如有错误,欢迎大佬们指出 这里是很显而易见的! 然后我们用for in 对他进行遍历,他的区别就出来 ...
- Android培训准备资料之UI一些相似控件和控件一些相似属性之间的区别
这一篇博客主要收集五大布局中的一些相似控件和控件一些相似属性之间的区别 ImageView ImageButton Button 三者有啥区别? (1)Button继承自TextView,ImageV ...
- [Vue]method与计算属性computed、侦听器watch与计算属性computed的区别
一.方法method与计算属性computed的区别 方法method:每当触发重新渲染时,调用方法method将总会再次执行函数: 计算属性computed:计算属性computed是基于它们的响应 ...
- CSS 属性选择器 ~=, |=, ^=, $=, *= 的区别
CSS 属性选择器 ~=, |=, ^=, $=, *= 的区别 总结: "value 是完整单词" 类型的比较符号: ~=, |= "拼接字符串" 类型的比较 ...
- .class, class.forName(), getClass()的区别
类名.class叫做"类字面量",因class是关键字, 所以类名.class编译时确定. getclass()运行时根据实际实例确定,getClass()是动态而且是final的 ...
随机推荐
- Mysql 培训
1. Mysql 培训 1.1. 培训目的 本文档是针对MySQL 数据库方面的基础培训,为了使项目组成员能够达到使用MySQL 数据库的目的. 1.2. 培训对象 开发者 1.3. 经常使用词及符 ...
- zend studio 安装xdebug
XDebug安装 到http://xdebug.org/download.php选择自己需要的xdebug版本.然后按照下面的配置建立目录.并在php.ini加入这些内容.重启server 注意xde ...
- MySQL Optimizer Tracemy 与 logmnr:MySQL binlog logmnr----MYSQL 邱伟胜 专家博客
http://www.noodba.com/ http://www.yhddba.com/?tag=mylogmnr https://github.com/noodba
- PHP中$_POST,$_GET,$_REQUEST,$_FILES全局变量的全局指什么
我一直担心,同一个表单,同时提交2次会发生什么事?在服务器端表单变量会不会彼此覆盖呢?也就是说假如我们在PHP中用$_REQUEST["name"]访问某个表单变量,会不会因为别人 ...
- 关于Spring的IOC和DI
原始调用模型 Spring的演化过程 Spring的调用过程 ======================================= IoC[理解][应用][重点] 1.IoC(Inversi ...
- Time complexity analysis of algorithms
时间复杂性的计算一般而言,较小的问题所需要的运行时间通常要比较大的问题所需要的时间少.设一个程序P所占用的时间为T,则 T(P)=编译时间+运行时间. 编译时间与实例特征是无关的,且可假设一个编译过的 ...
- [转载]PHP 字符串替换中文
$a = "Car 神"; $result = preg_replace('/([\x80-\xff]*)/i','',$a); var_dump($result); 参考链接:p ...
- 点击 a 标签触发事件而不跳转页面
有时候需要让 a 标签像 button 一样,被点击的时候触发事件而不跳转页面. <html> <body> <a id="a1" href=&quo ...
- Spring MVC中如何指定某个类或方法自适配地响应某个HTTP请求?
方法已经找到,即调用AbstractHandlerMethodAdapter.handle() public final ModelAndView handle(HttpServletRequest ...
- Cordova+angularjs+ionic+vs2015开发(五)
欢迎加群学习:457351423 这里有4000多部学习视频,涵盖各种技术,有需要的欢迎进群学习! 一.创建侧边菜单和导航项目 1.使用VS创建一个Ionic空项目,同时创建一个Ionic SideM ...