黑马程序员技术交流社区
标题:
小问题
[打印本页]
作者:
陆旭东
时间:
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