"HelloWorld",为什么输入java HelloWorld.java 也可以输出信息?

今天学Java的第一课

jdk17.0.2
运行结果

img


然后单独运行了一次java HelloWorld.java ,发现不是自动的帮我省下步骤了,没有class文件生成

img

跟教程上不一样的过程让我想知道,class文件的用途是什么?为什么会跳过class直接输出信息?

11后有一个新特性就是可以直接运行源代码,然后会在内存中生成class文件(磁盘中没有),然后由解释器运行
也就是说java Helloworld.java 其实相当于运行了以下两个命令

javac -d <memory> HelloWorld.java
java -cp <memory> helloWorld

至于你说的class文件的用途,相信你的教程里说的就是正确的
jvm运行的就是class文件,源代码必须编译成class文件才能被jvm运行

jdk11 开始支持直接运行源代码,执行 java -h 之后,可以看到:

用法:java [options] <主类> [args...]
           (执行类)
   或  java [options] -jar <jar 文件> [args...]
           (执行 jar 文件)
   或  java [options] -m <模块>[/<主类>] [args...]
       java [options] --module <模块>[/<主类>] [args...]
           (执行模块中的主类)
   或  java [options] <源文件> [args]
           (执行单个源文件程序)
```bash


```

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632