public static void main (String[] args) 详解

本文深入解析Java程序入口方法main()的定义与作用,探讨其不同格式的可能性,以及在一个.java文件中main()方法的唯一性原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public static void main (String[] args) 是Java程序的入口方法,JVM在运行程序时,会先查找 main() 方法。

  • public 是权限修饰符,表明任何类或对象都可以访问这个方法。
  • static 表明mian()方法是一个静态方法,即方法中的代码是存储在静态存储区的,只要类被加载后,就可以使用该方法而不需要通过实例化对象来访问,可以直接通过类名.main() 直接访问。
  • void 表明方法没有返回值。
  • main 是JVM识别的特殊方法名,是程序的入口方法。
  • 字符串数组参数args 为开发人员在命令行状态下与程序交互提供了一种手段。

 

引申

(1)main() 方法是否还有其他可用的定义格式?

  1. static public void main (String[] args) —— public 和 static 没有先后顺序
  2. public static final void main (String[] args) —— 可以定义为final
  3. public static synchronized void main (String[] args) —— 可以上同步锁

不管用哪种定义方式,都必须保证 main() 方法的返回值为 void,并有 static 和 public 关键字修饰。同时由于 main() 方法为程序的入口方法,因此不能用 abstract 关键字来修饰。

 

(2)同一个 .java 文件中是否可以有多个 main() 方法?

虽然每个类中都可以定义 main() 方法,但是只有与文件名相同用 public 修饰的类中的 main() 方法才能作为整个程序的入口方法。

class T {
	public static void main (String[] args) {
    	System.out.println("T main");
    }
}

// 必须是用 public 修饰,且类名与文件名相同的类中的 main() 方法才是入口。
public class Test {
	public static void main (String[] args) {
    	System.out.println("Test main");
    }
}

程序运行结果为:

Test main

### Java `public static void main(String[] args)` 方法详解 `public static void main(String[] args)` 是 Java 程序的入口方法,当 JVM 启动一个 Java 应用程序时,它会在指定的类中寻找此方法并执行其中的代码。以下是对此方法各组成部分的详细解释: #### 1. **`public`** 这是一个访问修饰符,表明该方法具有公共可见性。任何其他类都可以调用此方法[^3]。 #### 2. **`static`** `static` 关键字意味着该方法属于类本身而不是某个特定的对象实例。因此,在不创建类的实例的情况下也可以直接调用该方法。这是必要的,因为当 JVM 执行程序时,并未显式地创建类的实例[^4]。 #### 3. **`void`** 这指定了方法的返回类型为 `void`,即该方法不会返回任何值。对于入口方法来说,通常不需要返回值,因为它只是启动应用程序的一个起点[^3]。 #### 4. **`main`** 这是方法的名字,JVM 特别识别这个名字作为程序的起始点。如果没有这个名称的方法存在或者签名不符合规定,则无法正常运行程序[^4]。 #### 5. **`String[] args`** 这是一个字符串数组参数,用于接收来自命令行输入的参数。这些参数可以在运行时由用户提供给程序使用[^3]。 下面展示如何编写以及测试带有命令行参数的简单例子: ```java // 文件名为 Test.java public class Test { public static void main(String[] args) { System.out.println("Number of arguments: " + args.length); for(int i=0;i<args.length;i++) { System.out.println("Argument "+i+": "+args[i]); } } } ``` 假设保存以上代码到文件 `Test.java`, 编译之后可以通过命令行传入参数来验证功能: ```bash javac Test.java java Test first second third ``` 输出将是: ``` Number of arguments: 3 Argument 0: first Argument 1: second Argument 2: third ``` 这种方法使得开发者能够灵活处理外部数据输入[^5]。 ### 注意事项 - 每个 `.java` 文件最多只能有一个被标记为 `public` 的顶级类或接口。 - 如果包含 `public` 类型声明的话,`.java` 文件名字必须与此类名完全一致(大小写敏感)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值