代码:

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. 【Java EE 学习 45】【Hibernate学习第二天】【对象的三种状态】【一对多关系的操作】

    一.对象的三种状态. 1.对象有三种状态:持久化状态.临时状态.脱管状态(游离状态) 2.Session的特定方法能使得一个对象从一个状态转换到另外一个状态. 3.三种状态的说明 (1)临时状态:临时 ...

  2. UVA 11464 暴力+位运算 ***

    题意:给你一个 n * n 的 01 矩阵,现在你的任务是将这个矩阵中尽量少的 0 转化为 1 ,使得每个数的上下左右四个相邻的数加起来是偶数.求最少的转化个数. 新风格代码 lrj书上说的很清楚了, ...

  3. 关于tarjan算法的理解

    理解要点如下 理解LOW[i]数组的迭代过程.. low[u]=min(dfn[v],dfn[u],low[v]); 理解这个..如果有环..那么后代就可以更新祖先 那么low[v]就有用了.. 那么 ...

  4. 国内其他的maven库

    转自:http://www.cnblogs.com/woshimrf/p/5860478.html 在oschina关来关去的烦恼下,终于受不了去寻找其他公共库了. 阿里云maven镜像 <mi ...

  5. iOS 两行代码解决数据持久化

    在实际的iOS开发中,有些时候涉及到将程序的状态保存下来,以便下一次恢复,或者是记录用户的一些喜好和用户的登录信息等等. 这就需要涉及到数据的持久化了,所谓数据持久化就是数据的本地保存,将数据从内存中 ...

  6. Eclipse中快速删除空行

    1.在要编辑的文档中 "Ctrl"+"F",弹出搜索框: 2.在Find文本框中输入正则表达式:^\s*\n 3.勾选正则表达式选项: 4.Find和替换所有.

  7. Discuz!用户注册,登陆,生成帖子功能实现

    <?php /* * Disucz!部分功能使用说明: */ /***************************************************************** ...

  8. 在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求

    通用辅助类  下面是我编写的一个辅助类,在这个类中采用了HttpWebRequest中发送GET/HTTP/HTTPS请求,因为有的时候需 要获取认证信息(如Cookie),所以返回的是HttpWeb ...

  9. dede调用img图片

    1.默认的index.htm调用: {dede:arclist row='3' titlelen='30' typeid='1'} <div class="swiper-slide&q ...

  10. java分享第十二天(接口测试jsoup&cookie)

    一.Cookies到底是什么鬼?简单来说,Cookies就是服务器暂时存放在客户端(你的电脑里)的资料(.txt格式的文本文件),好让服务器用来辨认 你的计算机.当你在浏览网站的时候,Web服务器会先 ...