A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马张国礼 初级黑马   /  2012-6-8 08:14  /  1813 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字节码,Class,类之间到底是什么关系?
        Class的实例是类?Class又是字节码,字节码又代表类?
        由于功力尚浅,看了两遍视频了,还是没有彻底捋清他们三者之间的关系

5 个回复

倒序浏览
本帖最后由 刘克方 于 2012-6-8 09:05 编辑

类是对同一类事物的描述,Class也是一种类,不过它是对类描述的类;
所以它提供了一些方法,来告诉我们一个类有哪些方法,变量,构造方法等;
字节码就是java虚拟机将类编译成对应的.class文件
回复 使用道具 举报
类就是描述事物的,例如Person类,它有属性name和age,编译器能够了解它。。
字节码就是编译之后让虚拟机可以认识的代码。。
Class也是java的一个类,一个类对应一个字节码,可以产生多个对象!!
回复 使用道具 举报
字节码,Class,类之间到底是什么关系?
Class是一个类啊,Class是描述Java类的类,它(Class类)的各个实例对象分别对应各个类在内存中的字节码。类加载进内存里面的时候,其实就是字节码文件。
结合后面的反射的精简定义是:把java类中的各种成分映射成相应的java类。可以这样理解:class A{
成员变量;-->相应一个java类的实例对象
成员方法;--> 相应一个java类的实例对象
构造方法;--> 相应一个java类的实例对象
。。。
}
A在内存对应是一份大的字节码,它的内容又是由一份份字节码组成的,而Class就是管理这么多的字节码。
总结:是类,在内存中就有字节码,有字节码就得归Class管。

回复 使用道具 举报
类是逻辑意义上的,Class是类在代码中的反映和表现,字节码是在java虚拟机中对类的表示形式。
  1. class Person{//这是一个类。封装了“人”的属性
  2.         private String name;
  3.         public static void main(String[] args){
  4.                 Person p = new Person();//将类Person实例化,就是对象p。
  5.         }
  6. }
复制代码
这段代码想要执行,必须先被编译成字节码文件即class文件,装载进内存后,才能被java虚拟机执行。
回复 使用道具 举报
类加载进内存里面的时候,其实就是字节码文件,所以这个你明白了吧,类加载过以后,你用new将类实例化成了一个具体的东西,就比如说类是图纸的话,小汽车就是对象,类里面有小汽车必须的结构,特征,以及使用方法,不是么,我用类做出来了对象,你可以这样理解类和对象的关系,所以现在这样总结一下比较合适吧,对象是小汽车,小汽车是用图纸做出来的,这个图纸就是类,我不知道将字节码文件比作是做小汽车的零件是否合适,如果将字节码比作是零件的话,这些个零件放在一起就属于Class的对象,明白么,?Class也是一个类,也是有对象的,这个可能比较难理解,你多看两遍张老师高新视频上讲这个地方的那几个就明白了吧
总的来说:Class是一个类啊,Class类代表Java类,它(Class类)的各个实例对象分别对应各个类在内存中的字节码。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马