Java class,Object,Class的区别
代码:
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的区别的更多相关文章
- Java泛型Object和?区别
在写spark streamming读取kafka latest offset的时候,有一下语句: Map<TopicAndPartition, Object> latestOffsets ...
- java synchronized(object/this)的 区别
1.synchronized(object) package test.thread; import java.io.IOException; import org.junit.Test; /* * ...
- -1-5 java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait(),notify(),notifyAll()等方法都定义在Object类中
本文关键词: java 多线程 概念 进程 线程区别联系 java创建线程方式 线程组 线程池概念 线程安全 同步 同步代码块 Lock锁 sleep()和wait()方法的区别 为什么wait( ...
- Java总结篇系列:java.lang.Object
从本篇开始,将对Java中各知识点进行一次具体总结,以便对以往的Java知识进行一次回顾,同时在总结的过程中加深对Java的理解. Java作为一个庞大的知识体系,涉及到的知识点繁多,本文将从Java ...
- java中 == 与 equal 的区别
http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452156.html String str1 = new String("s ...
- java中ArrayList 、LinkList区别
转自:http://blog.csdn.net/wuchuanpingstone/article/details/6678653 个人建议:以下这篇文章,是从例子说明的方式,解释ArrayList.L ...
- 【转】java int与integer的区别
java int与integer的区别 int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1 ...
- Java笔记——equals和==的区别
摔在这里几次,还是记下来吧. 原文:http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452156.html -------------- ...
- java 中 ==和equals 的区别
Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolea ...
随机推荐
- CSS实现背景透明,文字不透明,兼容所有浏览器
11.11是公司成立的日子,16岁啦,我呢3岁半,感谢公司给了这样一个平台,让我得以学习和成长,这里祝愿公司发展越来越好~ 进入主题,每年11月11号是光棍节,产生于校园,本来只是一流传于年轻人的娱乐 ...
- 算法系列:FFT 003
转载自https://zhuanlan.zhihu.com/p/19763358 作者:Heinrich 链接:https://zhuanlan.zhihu.com/p/19763358 来源:知乎 ...
- sql对于between和时间
在写时间条件 ,比如 把2014/3/1 到2014/3/31这个时间段做为条件 的话,很多人都会写成这样 select date from table where date between '201 ...
- Python学习笔记(四)——编码和字符串
一.编码 1.编码类别: (1)ASCII码:127个字母被编码到计算机里,也就是大小写英文字母.数字和一些符号 (2)GB2312码:中国制定的用于加入中文汉字的编码 (3)Unicode:防止由于 ...
- nfs的挂载方法
对于很多嵌入式驱动开发者,要进行很多次调试,如果nfs搭建不起来,那么对开发是很不方便的.经过三天,我终于把自己编的内核下载到开发板,并实现了nfs文件系统的挂载.今天把过程写下来. 思路 一 编译a ...
- matlab学习第一天
>> x=linspace(-,,); >> y=x.^.*sin(x); >> plot(x,y,) >> plot(x,y,) 分析: linspa ...
- jvm中的年轻代 老年代 持久代 gc
虚拟机中的共划分为三个代:年轻代(Young Generation).老年代(Old Generation)和持久代(Permanent Generation).其中持久代主要存放的是Java类的类信 ...
- win10中将默认输入法设置为英文
开始 设置 时间和语言 区域和语言 语言--中文--选项 微软拼音输入法--选项 IME默认模式--英语
- WinServer 2008 远程桌面连接设置
WinServer 2008 远程桌面连接设置 1.在服务器端启用远程桌面>>计算机--右键--管理 看远程桌面是否已经启用,若未启用则启用它.配置远程桌面,勾选允许任意版本远程桌面的 ...
- 朋友圈常见单页面触屏滑动上下翻屏功能jQuery实现
翻页插件:实现原理,用margin-top来控制页面容器位置来实现上下翻页.margin这属性很好用,可以用来制作侧栏动画滑出菜单(左菜单,右内容,控制两者的margin实现):或者head下滑菜单 ...