C main vs Java main

时间:2010-12-10 01:48:16

标签: java c

C main函数和Java main函数有什么区别?

int main( int argc, const char* argv[] )

VS

public static void main(String [] args)

这些主要功能如何与每种语言创建相关,每种语言的好处或结果是什么?

2 个答案:

答案 0 :(得分:11)

他们做同样的事情 - 他们都打算成为你的计划的切入点。

签名的不同之处在于Java支持的数组“知道”它们的长度是多少,而C则不然。这就是为什么你需要argc,这是传递的参数数量的计数。

在C中,您使用return关键字以及整数值将成功或失败代码返回给shell。在Java中,您可以通过使用返回代码调用System.Exit(代码)来完成此操作。做同样事情的两种不同方式。

这个人有关于这个话题的quite the write-up

答案 1 :(得分:8)

C中的入口点(主函数)由C ++编译器工具链中的链接器用于在指定可执行目标时运行可执行文件时运行(否则忽略该函数)。此入口点是可执行规范的一部分,并且非常静态。它依赖于机器代码位于特定的具体内存地址。想象一下,我们将args数组指针和args计数放在内存中的堆栈中,该内存是在操作系统运行可执行文件时设置的,然后运行机器代码。另外,C函数有一个int返回类型,用于返回shell的失败或成功(通常是EXIT_SUCCESS(通常为0)或EXIT_FAILURE)。

Java中的入口点(主方法)是动态的,因为Java本身是一种解释的JIT语言,并且依赖于使用此方法的类在类路径上,并在执行'java'命令时指定。在查找主方法驻留在字节码中的位置,然后通过字节码解释器运行内容时,需要进行一些处理。 args数组也会进入堆栈以供方法体使用,但是它的设置比它更多,因为它是一个数组对象 - 我们让它在通过JNI等启动后转换它。 Java在main方法中没有返回类型,但是可以抛出未经检查的异常来指示失败(可能)。