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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陆旭东 中级黑马   /  2013-3-31 10:26  /  2073 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看了老师的视频,就是不太知道在反射那里的字节码到底是什么东西?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

7 个回复

倒序浏览
字节码就是.class文件加载到内存时,解析出来的一堆二进制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
字节码文件就是以.CLASS文件结尾的文件,是通过JAVAC命令编译过生成的。因为JAVA不是编译型语言,所以它需要去解释字节码文件才能够运行。一个类对应一个。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
若还有问题,请继续追问~  没有的话,请将帖子分类改成【已解决】~
回复 使用道具 举报
字节码文件就是通过JAVAC命令编译生成的可执行文件,以.class文件结尾。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 夏凡 于 2013-3-31 21:49 编辑

首先,反射就是把java类中的各种成分映射成相应的java类。
         比如,一个java类中用一个class类的对象来表示,一个类中的组成成分:成员变量,构造方法,方法等信息也用一个个java类来表示


其次,一个类被类加载器加载到内存中,占用一片内存空间,这个内存空间里面的内容就是累的字节码,不同的类的字节码是不同的

显然,字节码就是类在内存中的表现(或者)存在形式

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
首先,你要理解字节码的实质;其次,我会再解释字节码怎样产生的和java为什么要先生成字节码。
1.字节码是一种比机器码更抽象的中间码,是由一序列一个字节长度的op代码组成的,可以认为是包含一个执行程序的二进制文件。比如我们的class文件。
2.同一段机器语言在不同的系统上运行时,执行结果可能不同,所以若把java文件直接编译成系统可直接执行的机器语言,java语言就无法实现跨平台的特性了;因此,java虚拟机并不是把java文件直接编译成机器语言,而是通过java编译器将java文件编译成介于机器语言和高级语言之间的由字节单位的op代码组成的中间码,但字节码已经是二进制文件了并包含了一个执行程序。 当我们要运行class文件的时候,因为系统不能直接执行字节码文件,所以字节码是通过java虚拟机的解释器对其进行解释后,由虚拟机告诉系统该做些什么的。
到现在,你应该能明白字节码了吧。简单的说,就是我们用javac命令编译java文件后生成的可执行的class文件。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
首先,你要理解字节码的实质;其次,我会再解释字节码怎样产生的和java为什么要先生成字节码。
1.字节码是一种比机器码更抽象的中间码,是由一序列一个字节长度的op代码组成的,可以认为是包含一个执行程序的二进制文件。比如我们的class文件(即类)。
2.一般其它语言编写的程序都是直接编译成0101这样的机器语言后由系统直接执行的。同一段机器语言在不同的系统上运行时,执行结果可能不同,所以若把java文件直接编译成系统可直接执行的机器语言,就无法实现跨平台的特性了;因此,java虚拟机并不是把java文件直接编译成机器语言,而是通过java编译器将java文件编译成介于机器语言和高级语言之间的由字节单位的op代码组成的中间码,但字节码已经是二进制文件了并包含了一个执行程序。 当我们要运行class文件(字节码)的时候,因为系统不能直接执行字节码文件,所以字节码是在java虚拟机中通过字节码载入器载入然后再用解释器对其进行解释后,由虚拟机告诉系统要做些什么的。
到现在,你应该能明白字节码了吧。简单的说,就是我们用javac命令编译java文件后生成的可执行的class文件。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马