Java入门篇之Java与javac命令的爱恨情仇

java和javac命令到底是什么意思?

javac:将写好的java文件转换为Java字节码 

格式:javac name.java

Java入门篇之Java与javac命令的爱恨情仇_第1张图片

注意:使用后不会在命令行出现结果的反馈和变化 因为这个命令操作的结果是将java代码编译成字节码文件 到我们.java路径下可以看到新增了一个class字节码文件 

 java:运行字节码文件

 格式:java name


在最开始学习的时候,我发现使用 java Test.java 一样可以运行java文件 这是为什么呢?

我们java 运行的到底是.java 还是class呢?为什么class可以省略? 加了class反而报错?

带着一些列的疑问开始了Java正式学习(谷歌启动)  


在阅读了一系列文章后发现 两个命令大概是这样运行的

Java入门篇之Java与javac命令的爱恨情仇_第2张图片

 当我们使用java命令运行一个没有被编译的Java文件 发现报错

java name 命令是直接搜索当前文件夹中带有class后缀的name文件 如果找到就运行 如果没有 就报错

那为什么不能用带后缀的方式运行java的字节码文件呢?

在java中由这样一个规定 带包名的java文件 使用 java xxx.name(xxx指的是包名也就是class文件所在的路径)

最后一个问题 既然我们java命令使用的对象是.class 为什么java name.Java同样可以运行呢?

在java11后单文件源码 不通过编译可以直接运行

Java 11 : 无需编译即可运行单文件程序-InfoQ

总结:

javac是调用编译器将代码转化为字节码 

java是调用解释器对字节码进行解释 

值得注意的是:

        在java11后,java单文件源码(意思是只有一个类的java文件)是不需要通过编译命令javac 来执行编译操作就可以直接运行的

你可能感兴趣的:(java,开发语言,后端)