main()在C和C++中定义函数的正确(最有效)方法是什么- int main()或void main()- 为什么?如果int main()那么return 1或return 0?
这个问题有很多重复,包括:
main()函数的有效签名是什么?main()函数void main()和int main()?main()在C++中的签名main()? - 对于C++,确实有一个非常好的答案.main()C语言中的函数样式main()C中的方法类型int main()vs void main()在C中有关:
对于初学者,你如何能够很好地解释下面摘录中的含义String args[]和用法static?
class FirstApp {
public static void main(String[] args) {
...
}
}
Run Code Online (Sandbox Code Playgroud) 虽然返回类型不是方法签名的一部分,但JVM会查找精确的声明
public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)
我的假设是,由于方法签名没有包含"返回类型",我必须允许更改返回类型.
但是,如果我将其更改为public static int main(String[] args)并返回一个值,假设为0,则JVM无法执行程序并退出并显示错误
Error: Main method must return a value of type void in class TestData, please
define the main method as:
public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)
为什么Java规范要求主方法只是无效?当返回类型不是方法签名的一部分时,为什么会出现此限制?
这个问题与为什么java中的main()不同?:这个问题是关闭的,因为它是基于意见的,而我正在寻找JVM调用此方法的代码位置/进程,以及强制它们将此方法保持为空的限制.他们采取了哪些设计决策(以及背后的推理),以及它在哪里记录.
我正在寻找事实,以便知道为什么会这样做.如果不仔细阅读问题的详细信息,请不要将其标记为重复.
PS:退出,是另一回事.我更关心该计划的进入.此外,返回的值可能不是使用JVM,而是将其限制为void可扩展性.
到目前为止,我从这个问题中学到的是:Java规范明确地修复了返回类型,以避免混淆迁移程序员(C/CPP),他们可能期望这个值返回到操作系统,但由于JVM介于此之间,因此该值永远不会返回OS.为了这个特殊目的(返回OS的值),他们提供了System.exit()方法.
对于那些建议返回类型是签名的人 - 只是尝试在类中定义以下两种方法
public static void main(String[] a){
}
public static String main(String[] a){
}
Run Code Online (Sandbox Code Playgroud)
您将收到编译错误,因为这两种方法的签名是相同的.
我最近在考试中被问到方法的public static void main(String arg[])格式是否main已修复?我们可以改变它吗?我们可以使用main没有任何public,static或void?如果不是,为什么不是硬编码的main(String arg[])就代表public static void main(String arg[])永远?
关于C/C++,main()必须始终返回一个整数(零表示成功,非零表示失败).我可以理解这一点,因为程序运行它变成一个进程,每个进程都应该有一个退出状态,我们通过echo $获得?在进程结束后从shell中获取.
现在我不明白为什么main方法不能在Java中返回任何内容?它是否与程序在JVM上运行并且JVM进程可以返回以返回退出状态这一事实有什么关系?
请澄清.
谢谢,
罗杰
所以我只是尝试String[]从main方法中排除args
它汇编好了!
但JVM正在显示异常
为什么String[]每次都要包含args 时它会编译?
这里发生了什么 ?为什么不显示编译错误?
打字这让我觉得可能是编译器没有把它看成是main方法..是这样的吗?
如果是这样的话......为什么不呢?我的意思是不应该只有一个主要的方法必须有String[]args作为参数?
在我的(2.0.0.M6)kotlin-spring启动应用程序中,当我这样做时,一切正常
fun main(args: Array<String>) {
runApplication<MyApplication>(*args)
}
Run Code Online (Sandbox Code Playgroud)
但是找不到mainClass,IDEA不允许在我这样做时运行应用程序
fun main(args: Array<String>) = runApplication<RankedApplication>(*args)
Run Code Online (Sandbox Code Playgroud)
这根本不重要,但我想知道:为什么?
看来这是return status code从你的角度来看的一种方式main.但我想知道这int是怎么回事?我在eclipse上尝试过,但是我没有在控制台上看到它.我怎么得到的status code
public static void main(String[] args){
int status = 123;
System.exit(status);
}
Run Code Online (Sandbox Code Playgroud) java ×6
c ×2
c++ ×2
jvm ×2
return-type ×2
exit ×1
kotlin ×1
return-value ×1
spring-boot ×1
system.exit ×1