我们知道javac.exe将java源文件编译成字节码文件,既然是编译,那么生成的文件应该就是二进制的“机器”指令了,如果是,那么按照常理,之后用java.exe的作用就应该是执行指令了,可为什么说Java.exe是解释器,难道源文件在编译成字节码文件(字节码文件已经是二进制文件了)之后还要再经过一次解释(或说成是转换)之后才最后交给java虚拟机去执行吗?如果是的话,那么干嘛不将这两个步骤合二为一呢,这样分开做又是出于什么原因呢?我个人认为java虚拟机说的简单一点也不就是个中间解释器而已,因为java虚拟机的作用是将java程序转换为所在机器的机器指令,同一个java程序在不同的机器上,经java虚拟机翻译出来的最后结果是截然不同的
------解决方案--------------------
javac.exe是把原文件编译成class文件
java.exe是解释执行
1)很多时候,编译通过的代码不一定能够正常执行
也就是说可能会抛出RuntimeException
比如数组越界,强制转型错误等
2)在多态中,代码直到运行时才会知道去调用哪一个实现
还有其他区别,楼下继续补充哦