当前位置: 首页 > 面试题库 >

java中的public static void main(String arg [])是否已修复?

季稳
2023-03-14
问题内容

最近,我问一个考试,如果public static void main(String arg[])格式main的方法是固定的?我们可以改变吗?我们可以使用main没有任何的publicstatic还是void?如果不是,为什么不硬编码的main(String arg[])就代表public static void main(String arg[])永远?


问题答案:

Java语言规范的第12.1.4节指定了main方法的签名,并明确指出:

方法main必须声明为public,static和void。它必须指定一个声明的类型为String数组的形式参数(第8.4.1节)。

  • 必须这样,public否则将无法调用它
  • 一定是static因为您无法在调用对象之前实例化对象
  • String参数列表是允许从命令行执行Java程序时传递参数的地方。可以在不带参数的情况下定义它,但是这样更实用(和其他语言类似)
  • 返回类型是void因为没有其他含义:Java程序可以在到达main方法的结尾之前终止(例如,通过调用System.exit()

因此,方法签名可以是:

public static void main( String[] args )
public static void main( String... args )

请注意, varargs 版本(...)仅对Java 5有效

由于Java语言允许将方括号[]放在类型或变量之后(通常首选使用方括号),

public static void main( String args[] ) // valid but usually non recommended

也有效



 类似资料:
  • 问题内容: 是否可以 不 尝试加载就知道是否已加载Java类?尝试加载该类,但我不希望出现这种副作用。还有另一种方法吗? (我不想覆盖类加载器。我正在寻找一个相对简单的方法。) 问题答案: (感谢Aleksi)此代码: 产生: 请注意,示例类不在软件包中。完整的二进制名称是必需的。 二进制名称的一个示例是

  • 问题内容: 我不想编码已经存在的东西… 问题答案: 检查成熟轻量的leeloo OAuth 2.0 Java库:http ://leeloo.smartam.net/ 它实现OAuth 2.0规范的草案10,并帮助您构建客户端,授权和资源服务器。 尚未在Android平台上进行过测试,但是欢迎您提供反馈。

  • 我有两个问题关于StreamingOutput在泽西: 1) 它已经被jax-rs运行时缓冲了吗?我见过一些例子,在重写write()方法时,从OutputStream对象创建BufferedWriter。但我想知道这是否真的有必要。 2) Jersey或jax rs运行时是否在流完成后关闭OutputStream对象? 谢谢 格格

  • 问题内容: 截至2010年10月,GNU的Java编译器是否已失效?是否有任何有效的替代方法(特别是用于将Java编译为本地代码)? LLVM解决方案将是首选。 问题答案: 您可以使用IKVM和Mono的提前编译器生成本机代码。 编辑 此页面底部有一个示例。

  • 我正在用java创建一个jframe。但我想检查系统上是否已经存在jframe。我尝试过一种方法,从任务管理器获取所有进程,然后查看它是否正在运行,但它不会工作。我使用了这篇文章中的一种方法:https://stackoverflow.com/a/19005828/15349408它的进程名是“javaw.exe”。 它无法检查jframe对象是否为null,因为它将从其他程序运行。是否可以检查j

  • 一个类似于Iterator中的的方法,在异常抛出和布尔返回行为中(尽管没有与的约定)。 示例: 目标是在客户端代码调用此方法而不消耗流的情况下早期失败。 一个可接受的答案也可以是“没有解决方案存在”,并有充分的理由说明为什么规范不能添加这样的方法(如果有充分的理由的话)。看起来JDK流通常在其终端方法的开头有以下代码段: 因此,对于这些流,实现这样的方法似乎并不困难。