代码:

http://www.cnblogs.com/hongdada/p/6060487.html

package com.company;

public class Main {
public static void main(String[] args) throws Exception {
Class a= Test.class;
Class b=new Test().getClass();
Class c=Class.forName("com.company.Test");
System.out.println(a==b);
System.out.println(b==c);
System.out.println(a);
System.out.println(a.getName());
System.out.println("===========");
//Class的性质
Class d=a.getClass();
System.out.println(d);
System.out.println(d.getName());
System.out.println("===========");
Class n1=a.getSuperclass();
System.out.println(n1);
System.out.println(n1.getName());
System.out.println("===========");
Class n2=d.getSuperclass();
System.out.println(n2);
System.out.println(n2.getName());
System.out.println("===========");
Class n3=Object.class;
System.out.println(n3);
System.out.println(n3.getName());
}
}
class Test{}
true
true
class com.company.Test
com.company.Test
===========
class java.lang.Class
java.lang.Class
===========
class java.lang.Object
java.lang.Object
===========
class java.lang.Object
java.lang.Object
===========
class java.lang.Object
java.lang.Object

从上面的代码可以看出,Class一般是在反射的时候用到的,并且Class是Object的子类

Class n4=new Class();  

Class是一个特殊的类,不可以直接实例化。

类型Class与关键字class容易分不清

网上有这样的问题

所有的类都是Class类的实例,Object是类,那么Object也是Class类的一个实例。
所有的类都最终继承自Object类,Class是类,那么Class也继承自Object。

可以看出第二条是对的,

对于对一条,看代码

package com.company;

public class Main {
public static void main(String[] args) throws Exception {
Class c = Object;
System.out.println(c);
System.out.println(c.getName());
}
}
class Test{}

执行的时候会报错,直接找不到符合变量Object,如果Object是Class的一个实例的话,不应该出现这样的问题,所以第一条应该是错误的。

按我的理解,

Class只是一个名字比较特殊的类,是关键字class修饰的类,一般应用于反射,只是名称比较特殊而已,可以通过Class类型来获取其他类型的元数据(metadata),比如字段,属性,构造器,方法等等,可以获取并调用。

class是一个关键字,是用来修饰类

Object是一个特殊的类,所有的类都继承该类,包括Class也继承Object。

类是一个语法概念,是一个抽象的概念,所有class修饰的都属于这个概念。所有类都有一个(属性,好像也不是属性)class返回含有该类元数据的Class类的实例。(有点不好描述,就是比如Class a=Test.class)

https://www.zhihu.com/question/30301819

Java class,Object,Class的区别的更多相关文章

  1. Java泛型Object和?区别

    在写spark streamming读取kafka latest offset的时候,有一下语句: Map<TopicAndPartition, Object> latestOffsets ...

  2. java synchronized(object/this)的 区别

    1.synchronized(object) package test.thread; import java.io.IOException; import org.junit.Test; /* * ...

  3. -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中

     本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁  sleep()和wait()方法的区别 为什么wait( ...

  4. Java总结篇系列:java.lang.Object

    从本篇开始,将对Java中各知识点进行一次具体总结,以便对以往的Java知识进行一次回顾,同时在总结的过程中加深对Java的理解. Java作为一个庞大的知识体系,涉及到的知识点繁多,本文将从Java ...

  5. java中 == 与 equal 的区别

    http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452156.html String str1 = new String("s ...

  6. java中ArrayList 、LinkList区别

    转自:http://blog.csdn.net/wuchuanpingstone/article/details/6678653 个人建议:以下这篇文章,是从例子说明的方式,解释ArrayList.L ...

  7. 【转】java int与integer的区别

    java int与integer的区别 int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1 ...

  8. Java笔记——equals和==的区别

    摔在这里几次,还是记下来吧. 原文:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452156.html -------------- ...

  9. java 中 ==和equals 的区别

      Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolea ...

随机推荐

  1. JDK常用工具集——jps

    该命令的作用是罗列出目标系统(target system)中所有具有访问权限到的Java进程. 一.命令简介:     jps [option] [hostid] 二.参数说明:     option ...

  2. Java 8相关

    语言生态系统中的所有语言都有优胜劣汰的压力.虽然Java语言当前还在健康发展,但是保不定哪天就完蛋了. Java8增加的新特性从根本上来说是为了提高搬砖的姿势和效率. 多核编程的更好支持. 方法成为一 ...

  3. PHP 汉字数字互转(100以内)| PHP 汉字转数字 | PHP数字转汉字

    <?php function numDatabase(){ $numarr =array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,2 ...

  4. ArcGIS 10与ArcEngine 10安装及破解

    1 2 3 4 5 分步阅读 一键约师傅 百度师傅高质屏和好师傅,拯救你的碎屏机 百度经验:jingyan.baidu.com 现在常见的破解方法在下面的地址中已经详细附图说明了,但是这种破解方法,想 ...

  5. java基础-继承

    浏览以下内容前,请点击并阅读 声明 一个由其他类继承的类叫子类(也叫继承类,扩展类等),该类继承的类叫父类或超类.除了Object类意外,所有的类都有切仅有一个父类,如果一个类没有用extends关键 ...

  6. Session和Cache的区别

    以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application.其中Cookie是保存在客户端的一组数据,主要用来保存用户名等个人信息.Session则保存 ...

  7. XVI Open Cup named after E.V. Pankratiev. GP of SPB

    A. Bubbles 枚举两个点,求出垂直平分线与$x$轴的交点,答案=交点数+1. 时间复杂度$O(n^2\log n)$. #include<cstdio> #include<a ...

  8. [转] 前端中的MVC

    MVC是一种设计模式,它将应用划分为3个部分:数据(模型).展现层(视图)和用户交互(控制器).其中: M - MODEL(模型) V - VIEW(视图) C - CONTROLLER(控制器) 一 ...

  9. ACM: FZU 2112 Tickets - 欧拉回路 - 并查集

     FZU 2112 Tickets Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u P ...

  10. compass General 常用api学习[Sass和compass学习笔记]

    compass 中一些常用api 包括一些浏览器hack @import "compass/utilities/general" Clearfix Clearfix 是用来清除浮动 ...