Java c-相当于.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

所以,我知道在Java中,.Java是人类可读的版本,.class是编译的


在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