Java如何实现平台无关性

2019-08-28  本文已影响0人  叫我胖虎大人

通常把Java文件分为编译时运行时,通过javac命令将.java文件编译成字节码


Java源码首先被编译成字节码,再由不同平台的JVM进行解析,Java语言在不同平台上运行时不需要进行重新编译.Java虚拟机在执行字节码的时候,把字节码转换成具体平台上的机器指令.

示例:

  1. 创建一个Test.java文件
/*************************************************************************
    > File Name: Test.java
    > Author: 
    > Mail: 
    > Created Time: 2019年08月28日 星期三 15时34分04秒
 ************************************************************************/
public class Test
{
    public static void main(String[] args){
        int i = 5;
        int j = 6;
        System.out.println(i + j);
    }
}
  1. 编译Java文件
# panghu @ ubuntu18 in ~/Desktop/com/test/demo [16:29:11] 
$ javac Test.java 

# panghu @ ubuntu18 in ~/Desktop/com/test/demo [16:29:13] 
$ ls
Test.class  Test.java
  1. 查看.class文件
    使用javap -c命令查看指定文件

这里可以发现一点,编译器会在未指定构造函数的时候,默认创建一个无参构造方法

注意:如果指定了package需要在对应的包下才能执行,否则会抛出找不到主类的异常.


为什么JVM不直接将源码解析成机器码去执行

参考课程:https://www.imooc.com/search/?words=%E5%89%91%E6%8C%87offer

上一篇下一篇

猜你喜欢

热点阅读