为什么java编译器要将java代码转为字节码(byte)?为什么不可以直接转为位(bit)?那样的话计算机不就可以直接读取了么?为什么还需要虚拟机呢?这么做的原因是什么?
2 回答
富国沪深
TA贡献1790条经验 获得超9个赞
java编译器要将java代码转为Unicode字节码(byte)主要原因是为了实现跨平台,因为在不同的机器字长的机器上表示相同的数据类型数据需要的字节数是不同的,而一个字节是固定由8位二进制数表示,如果我们直接编译转为bit,等于是根据编译程序的机器环境已经确定了表示该数据类型需要的字节数,这样的后果是可能会造成所给的字节数小于程序目标使用机器实际上表示该数据类型的需要而缩小该数据类型的数值表示范围,从而导致数值越界造成程序出现Bug。而JVM就像Java程序和机器硬件之间的一座桥梁,前面得到的Unicode字节码(byte)组成的.class文件根据机器硬件环境来进行编译,从而使应用程序能在各种平台上运行一致。
添加回答
举报
0/150
提交
取消