黑马程序员技术交流社区

标题: 小问题 [打印本页]

作者: 陆旭东    时间: 2013-3-31 10:26
标题: 小问题
看了老师的视频,就是不太知道在反射那里的字节码到底是什么东西?
作者: 黑马李杰    时间: 2013-3-31 11:11
字节码就是.class文件加载到内存时,解析出来的一堆二进制代码
作者: wanggang    时间: 2013-3-31 11:13
字节码文件就是以.CLASS文件结尾的文件,是通过JAVAC命令编译过生成的。因为JAVA不是编译型语言,所以它需要去解释字节码文件才能够运行。一个类对应一个。
作者: 陈丽莉    时间: 2013-3-31 18:48
若还有问题,请继续追问~  没有的话,请将帖子分类改成【已解决】~
作者: 杜加璇    时间: 2013-3-31 19:15
字节码文件就是通过JAVAC命令编译生成的可执行文件,以.class文件结尾。
作者: 夏凡    时间: 2013-3-31 21:47
本帖最后由 夏凡 于 2013-3-31 21:49 编辑

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


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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2