public static void main(String[] args)字段解释

本文解析了Java程序入口方法public static void main(String[] args)的各部分含义:public表示该方法可被任何地方调用;static确保无需实例化即可调用;main指程序入口;String[] args用于接收命令行参数。

从开始接触java开始,第一行代码就是public static void main(String[] args),但是还从来没有去研究过为什么要这么写。

今天在java编程思想4里面看到了对public static void main(String[] args)的解释,写个博客记下来,巩固一下记忆。

public static void main(String[] args)里面的每个字段都是有意义的。

public:表示这个方法是公有的,在任何地方都能被调用,方便其他类对该类主函数的调用。

static:告诉编译器main函数是静态的,在定义类的同时,main方法中的代码就已经存储到存储区了,让我们能够在不创建类的实例下使用它。

如果不写static,在写代码时不会报错,但是在运行时,编译器会报运行时错误,因为此时类并没有创建实例,无法使用类的方法,也就无法调用main方法。

main:程序的入口,跟C程序的入口意思差不多,从C沿用过来的方法名

String[] args:参数列表,java编译器要求必须这么做,args用来存储命令行参数



`public static void main(String[] args)` 是 Java 程序的入口方法,JVM 在运行程序时会首先查找该方法。下面对其各部分进行详细解析: - **`public`**:是一个权限修饰符,表明该方法具有公共的访问权限,即可以在任何类或对象中被访问。Java 中有四种权限修饰符,权限级别从高到低依次为 `public > protected > (default) > private`,其中 `default` 不是关键字,为空[^3][^4][^5]。 - **`static`**:是一个关键字,它告知编译器 `main` 函数是一个静态函数。静态方法不能访问实例字段,但可以访问自身类中的静态字段。`main` 方法必须是静态的,因为在 JVM 启动时,还没有创建类的实例对象,如果 `main` 方法不是静态的,就无法被调用。如果没有 `static`,运行时会出错[^2][^3][^4][^5]。 - **`void`**:声明该函数无返回值。在 Java 方法中,如果需要返回数据,使用 `return` 关键字,并且返回的数据类型必须与方法声明处所写的返回值类型相同或为其子类。如果方法无需返回数据,在方法的返回值声明处要标有 `void` 关键字[^3]。 - **`main`**:是函数名,它是 JVM 识别的特殊函数名,是程序的入口方法[^3][^5]。 - **`String[] args`**:定义了一个字符串数组参数,用于接收来自程序执行时传进来的参数。在命令行状态下,可以通过编译执行将参数传进来,参数以空格方式隔开。例如,执行 `java HashMapTest a b c`,传进 `main` 函数的就是一个字符串数组,`args[0] = "a"; args[1] = "b"; args[2] = "c"`。如果不传参数进来,`args` 为空[^4]。 ### 语法错误检查 如果写成 `publid static void main(String[] args)`,这确实是 `public` 的拼写错误。正确的写法应该是 `public static void main(String[] args)`。如果对这个标准声明任何修改,编译可能成功,但运行 Java 程序时会得到运行时错误,因为 JVM 找不到符合要求的 `main` 方法。例如,若不写 `static` 或返回类型不写 `void` 等,都会导致程序运行出错,不写 `static` 会在运行时出错,不写 `void` 会有编译错误[^1][^2]。 ### 使用方法示例 ```java public class MainExample { public static void main(String[] args) { // 检查是否传入了参数 if (args.length > 0) { System.out.println("传入的参数如下:"); for (int i = 0; i < args.length; i++) { System.out.println("参数 " + (i + 1) + ": " + args[i]); } } else { System.out.println("没有传入任何参数。"); } } } ``` 在命令行中编译和运行该程序: ```sh javac MainExample.java java MainExample param1 param2 param3 ``` 运行结果会输出传入的参数信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值