具有文件扩展名的java文件编译
当我们编译java程序时,我们使用具有文件扩展名的java文件编译,java,javac,Java,Javac,当我们编译java程序时,我们使用javac file.java命令,但在运行时,我们使用java file 那么,为什么在编译时需要显式指定文件扩展名,而在运行java程序时不需要呢?因为在“运行”java.class编译文件时,您告诉java应用程序启动器哪个类包含主方法。启动器启动Java运行时环境并加载指定的类 如果编写javamyclass,那么使用main方法的类就是MyClass。请注意,编写javamyclass.class是错误的,因为MyClass.class不是类的名称 当
javac file.java
命令,但在运行时,我们使用java file
那么,为什么在编译时需要显式指定文件扩展名,而在运行java程序时不需要呢?因为在“运行”java.class编译文件时,您告诉java应用程序启动器哪个类包含主方法。启动器启动Java运行时环境并加载指定的类
如果编写javamyclass
,那么使用main方法的类就是MyClass
。请注意,编写javamyclass.class
是错误的,因为MyClass.class
不是类的名称
当您使用javacmyclass.java
编译时,您需要告诉java编译器扩展名,因为它是一个文件,需要找到它
那么,为什么在编译时需要显式指定文件扩展名,而在运行java程序时不需要
因为这就是工具的实现方式:
命令需要文件路径名javac
命令需要java类名java
- 讨论(主题外)
- 基于意见(主题外),以及
- 模拟
1-如果工具工作方式不同,对初学者来说会更好。然而,如果新手注意,理解这些工具其实并不难。。。。并且费心去阅读文档和/或一个像样的教程和/或在课堂上听。谢谢。我现在明白我的疑问了。因为一个java文件可以包含相同数量的类,但只能包含一个
main()
class。因此,在运行时,我们只需要指定包含main()
@SanTech的类名-实际上,您的推理是错误的。1) 无法运行“.java”文件,因为它未编译。(它可以包含多个类的事实是没有意义的。)2)一个“.class”文件将只包含一个编译过的类。因此,运行javamyclass.class
。。。但它不是那样工作的。3) 真正的原因很简单。这样做是因为java
命令就是这样工作的。好的。更简单的是,javac
命令使用文件进行编译,java
命令使用类名进行运行。此外,类文件可以位于类路径上的任何位置,如果提供了类路径,甚至可以位于JAR文件中。您没有指定类文件;您可以指定完全限定的类名,并让类加载器确定它在哪里。不,在运行时,我们使用java
。不一样。