package d18_3_1;

/**
* Java中的java.lang.Class,简单理解就是为每个java对象的类型标识的类,
* 虚拟机使用运行时类型信息选择正确的执行方法,用来保存这些运行时类型信息的就是Class类。
* 虚拟机为每种类型管理一个独一无二的对象,即Class对象,
* 当类被加载时,对应的Class类型对象会通过调用类加载器中的 defineClass方法自动构造自动创建。
* 注意Class对象是单实例的,在运行时,如果该Class对象没有创建,虚拟机会自动创建,如果已经存在,就不会创建了。
*
* 形如className.class,我们称之为类字面常量。
* Class c = java.awt.Button.class;
* Class c = Integer.TYPE;
* 注意:TYPE用于基本数据类型的包装器类。TYPE字段是一个引用,指向对应的基本数据类型的Class对象。所以:
* boolean.class 等价于 Boolean.TYPE
* char.class 等价于 Char.TYPE
*
* 总结:三种方式均能够获得Class对象,区别是
* 方法一不执行静态块和动态构造块,
* 方法二执行静态块、不执行动态构造块,
* 方法三需要创建对象,静态块和动态构造块均会执行;
*
* 注意:静态块仅在类加载时执行一次,若类已加载便不再重复执行;而动态构造块在每次new对象时均会执行
*/
public class Client { public static void main(String[] args) throws ClassNotFoundException {
// TODO Auto-generated method stub
Class t1 = Test.class;
System.out
.println("通过类名.class方式获得Class对象,Class<?> cType = ClassName.class"); //
Class t2 = Class.forName("d18_3_1.Test");
System.out
.println("通过Class.forName()方法获得,Class<?> cType = Class.forName('类全名');"); //
Test t = new Test();
Class t3 = t.getClass();
System.out
.println("通过对象名.getClass()方法获取,Class<?> cType3 = objName.getClass();");
}
} class Test {
static {
System.out.println("静态代码块");
}
{
System.out.println("动态代码块");
}
}

  

18.3.1获得Class对象的更多相关文章

  1. Python_day8_面向对象(多态、成员修饰符、类中特殊方法、对象边缘知识)、异常处理之篇

    一.面向对象之多态 1.多态:简而言子就是多种形态或多种类型 python中不支持多态也用不到多态,多态的概念是应用与java/C#中指定传参的数据类型, java多态传参:必须是传参数的数据类型或传 ...

  2. java对象数组的概述和使用

    1 public class Student 2 { 3 // 成员变量 4 private String name; 5 private int age; 6 7 // 构造方法 8 public ...

  3. ObjectiveC1基础代码——类和对象

    // //  main.m //  ObjectiveC1 // //  Created by scjy on 15/10/30. //  Copyright © 2015年 lizhipeng. A ...

  4. JavaSE_ 集合框架 总目录(15~18)

    JavaSE学习总结第15天_集合框架1 15.01 对象数组的概述和使用15.02 对象数组的内存图解15.03 集合的由来及与数组的区别15.04 集合的继承体系图解15.05 Collectio ...

  5. JavaSE学习总结第18天_集合框架4

      18.01 Map集合概述和特点 Map接口概述:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值 Map接口和Collection接口的不同 1.Map是双列的,Coll ...

  6. 关于Class对象、类加载机制、虚拟机运行时的内存布局的全面解析和推测

    简介: 本文是对Java的类加载机制,Class对象,反射原理等相关概念的理解.验证和Java虚拟机中内存布局的一些推测.本文重点讲述了如何理解Class对象以及Class对象的作用. 欢迎探讨,如有 ...

  7. JavaScript函数与对象

    函数 函数的定义 JavaScript中的函数和Python中的非常类似,只是定义方式有点区别. // 普通函数定义 function f1() { console.log("Hello w ...

  8. javascript基础之对象

    老师的博客:https://www.cnblogs.com/liwenzhou/p/8004649.html#autoid-1-8-6 JavaScript中的所有事物都是对象:字符串.数字.数组.日 ...

  9. JavaScript—Date对象详情

    Date对象概述 javaScript 提供了 Date 类型来处理时间和日期.Date 对象内置一系列获取和设置日期时间信息的方法.(不是内置对象,需要自己new) javaScript 中的 Da ...

随机推荐

  1. 苹果应用内支付(iOS IAP)的流程与常用攻击方式

    1. 客户端直接verify苹果的receipt 如果verify成功 自行发放商品 2. 客户端将receipt传给server,由server进行验证并发放商品 按照安全性原则, 客户端的所有信息 ...

  2. poj 1821 Fence(单调队列优化DP)

    poj 1821 Fence \(solution:\) 这道题因为每一个粉刷的人都有一块"必刷的木板",所以可以预见我们的最终方案里的粉刷匠一定是按其必刷的木板的顺序排列的.这就 ...

  3. i MySQL 查看约束,添加约束,删除约束

    查看表的字段信息:desc 表名; 查看表的所有信息:show create table 表名; 添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) ...

  4. Java 8 新的时间日期 API

    1. 概述 1.1 简介 Java 8 引入了一套全新的时间日期API,操作起来更简便.简单介绍下,LocalDate和LocalTime和LocalDateTime的使用: java.util.Da ...

  5. django错误 - Reason given for failure: CSRF cookie not set.

    练习Django表单提交时遇到如下问题: 在网上各种查找,终于找到了解决方法. 1.在from 表单中添加 {% csrf_token %} 2.在视图中添加 from django.template ...

  6. table中tr或者td的点击事件

    直接把时间添加到table或者tbody上,只有下面的tr或者td才能促发事件,通过e.target可以获得当前点击tr或者td,这样就可以进行查询或者删除操作了 如果是删除,直接e.target.r ...

  7. 【旧文章搬运】PE感染逆向之修复(Serverx.exe专杀工具出炉手记)

    原文发表于百度空间,2008-10-4看雪论坛发表地址:https://bbs.pediy.com/thread-73948.htm================================== ...

  8. pdf解锁和脱水印

    解锁工具下载http://pan.baidu.com/s/1o8FcKFC 使用方法: 第一步: 打开加密pdf文件保存即可 参考:http://www.epinv.com/post/157.html

  9. 03_主线程联网问题&ANR&子线程不能修改UI

    如果不使用HAXM,恐怕网页源码查看器无法获取servlet的源码.初步猜测是安卓模拟器运行速度太慢了.如果CPU不支持VT-x的话,HAXM是安装不上的.所以可以先开启VT-x. 可以参考几篇文章h ...

  10. [NEXT] 时间管理实践

    此文已由作者杨卫强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 我个人认为,浪费时间比较主要的原因有两个 工作缺乏计划 工作过程被打扰,效率低下 以下记录我自己的时间管理实 ...