Java c-相当于.class
所以,我知道在Java中,.Java是人类可读的版本,.class是编译的Java c-相当于.class,java,c,class,.class-file,Java,C,Class,.class File,所以,我知道在Java中,.Java是人类可读的版本,.class是编译的 在c中,人类可读的版本是.c,但编译类是否有任何单独的文件扩展名?c通常为本机平台生成文件(而不是字节码)。在windows上,.exe和.dll是常见的。在许多平台上经常可以看到带有.o的中间“对象”文件(这些文件是中间的,因为它们没有链接)。有些头文件以.h结尾。在Linux上,您通常会看到。因此库和可执行文件通常没有扩展名。在Mac上,它依赖于大量的东西。.o(或.obj)对象文件是编译的.c文件,是最接近Java
在c中,人类可读的版本是.c,但编译类是否有任何单独的文件扩展名?c通常为本机平台生成文件(而不是字节码)。在windows上,
.exe
和.dll
是常见的。在许多平台上经常可以看到带有.o
的中间“对象”文件(这些文件是中间的,因为它们没有链接)。有些头文件以.h
结尾。在Linux上,您通常会看到。因此
库和可执行文件通常没有扩展名。在Mac上,它依赖于大量的东西。.o
(或.obj
)对象文件是编译的.c
文件,是最接近Java的.class
文件的
它们可以捆绑在一个归档文件中(
.a
),也可以链接到一个实际的程序或动态库中。最接近的模拟是C文件被编译成目标文件(通常以.o
结尾)。对象文件公开符号并链接到可执行文件中。但是,对象文件与Java.class
文件不同。用C编程语言编写的程序通常编译为本机可执行文件,例如Windows.exe
文件
大多数C编译器将每个源代码文件编译成一个目标文件,通常扩展名为.o
。链接器获取一个或多个.o
文件,并从中创建本机可执行文件
.o
文件不能直接与Java.class
文件相比。例如,您不能像运行Java.class
文件那样执行.o
文件。由于.class
文件在Java中有多种用途,因此可能需要几种不同的答案
(1) 当Java代码将变量声明为特定类型,或使用new
创建类型实例时,编译器需要知道该类型有哪些方法和其他成员,以及其他信息。在C语言中,这种信息必须在源代码中;这可以通过包含.h
文件来实现
(2) Java.class
文件包含执行的代码。执行程序时,加载.class
文件中的代码;程序还可以动态加载一个类文件,该类文件的名称在运行时之前是未知的。对于C,代码在对象文件中生成(在Windows或Linux系统上为.o
),然后链接到包含所有程序代码的单个可执行文件中(在Windows上为.exe
;在Linux上为无扩展名)。代码也可以在程序启动后动态引入;在Windows上,可以加载.dll
动态库文件中的代码
(3) 当程序使用反射时,将使用来自Java.class
文件的信息。C没有这样的概念
(4) 调试时,调试器需要的有关变量、方法等的信息保存在
.class
文件中。对于C,它通常以符号表中的特殊格式保存在对象文件中(例如DWARF
或STABS
)。通常,在运行C编译器时,您必须添加一个标志,以使其存储额外的信息。C不像Java那样工作。C没有这样的文件。通常(在Windows上)编译器生成一个.o文件,该文件与其他文件“绑定”为.exe。尽管还有其他文件类型,不同的操作系统有不同的标准。Java是可读的还是C是可读的?除非类文件声明了最终静态void main()
@rupps,即公共静态void main
,否则不能运行类文件。另外,尽管不能将类作为主程序运行,但可以在运行时动态查找.class
,并执行其方法。您不能使用.o
文件执行此操作。(但您可以使用.dll
)