黑马程序员技术交流社区

标题: 解惑:一道简单的课后题 [打印本页]

作者: 王小丑    时间: 2013-2-7 09:48
标题: 解惑:一道简单的课后题
我在看书时有一道课后题问    java编译器将源文件编译生成的字节码是机器码吗? 我觉得.class文件像机器码啊,是不是呢?要是不是又是什么呢?求解答
作者: 惠晖    时间: 2013-2-7 10:02
是的是的是的
作者: 逍林游    时间: 2013-2-7 10:33
.class文件不是二进制文件,当被类加载器加载后在内存中才是字节码!
作者: 李洪因    时间: 2013-2-7 11:04
Java编译后是字节码,在运行的时候把字节码变成机器码。
.class 文件是.java的编译文件,就是java程序本身,是java程序最最重要的部分.在系统中的jvm只认识.class的二进制编码文件,.class文件就是运行在jvm上的java程序,并被java虚拟器解释成计算机可以"看懂"的机器码 然后执行。java的跨平台性就是.class,可以运行在任何系统的jvm(java虚拟机)上。
作者: 黄玉昆    时间: 2013-2-7 23:44
当你在键入下面的命令:(比如有个类文件是Demo.java)
  1. javac Demo.java
  2. java Demo
复制代码
javac程序(在bin目录下有javac.exe的程序)是一个java编译器。
它将文件Demo.java编译成.class,并发送到JVM虚拟机。虚拟机执行编译器存放在class文件中的字节码。
机器码就是机器能看懂的语言,即010101这些底层二进制语言,所以所机器码和字节码不在一个层面上。

作者: 王昕    时间: 2013-2-8 12:52
.class是给JVM看的,JVM把它翻译成机器码,不同机器的机器码不同,因为指令集什么的都不同。




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