实例分析Java中public static void main(String args[])是什么意思
作者:NW_KNIFE 发布时间:2023-10-18 16:34:01
本文实例讲述了Java中public static void main(String args[])的来龙去脉。分享给大家供大家参考,具体如下:
public static void main(String[] args)
这绝对不是凭空想出来的,也不是没有道理的死规定,而是java程序执行的需要。
jvm在试图运行一个类之前,先检查该类是否包含一个特殊方法。这个方法必须是公有的,以便在任何位置都能访问得到。这个方法必须是static的,因为这个方法不能依赖任何该类的实例即可运行,而非static的方法,在运行之前要先创建该类的实例对象。
这个方法没有返回值。和C/C++程序不一样,java的程序默认都以常态结束,所以main不返回int。如果要以非常态结束程序,可以用System.exit(1)。
这个方法必须可以接受数目不定的String类型的参数,因为运行者可能要附加运行参数。如java HelloWorld jack 100,这里的jack和100就是运行参数。
为什么是String呢?因为String具有普遍性。任何字面形式都可以解释成String,而其他类型则不然(如jack就不能解释成整数或浮点数),所以用String来存储参数最合适。而因为参数数目不限一个,所以用了数组,即String[]。在Java 1.5以后,还可以写成String...,表示数目不定。
至于参数的变量名可以任意,只要保证在方法内部按该变量名来获得参数就行了,从变量的作用角度来说,叫arguments或args当然是最合适的。
至于这个方法的名字为什么一定是main,有历史原因,因为最早的C以main函数作为程序入口,java沿用了这个历史传统。
下面我们以一个例子一探究竟:
package test;
public class MainTest {
public static void main(String[] args)
{
for (int x=0; x<args.length; x++)
{
System.out.println(args[x]);
}
}
public static void sysInfo(){
System.out.println("call sysInfo()");
}
}
public class MainDemo {
/*
public static void main(String[] args)
public:权限修饰符,权限最大。
static:随着MianDemo类的加载而加载,消失而消失。
void: 没有返回值
main: 函数名,jvm识别的特殊函数名
(String[] args):定义了一个字符串数组参数
*/
public static void main(String... args)
{
String[] arr = new String[]{"zhang","li","wang","zhao"};
MainTest.main(arr);
MainTest.sysInfo();
}
/*
总结:
1、main()函数是被jvm调用,jvm给main()传了一个长度为0的字符串的数组,也就是new String[0]
2、可以通过类名.main()进行传值操作,因为main()方法是static的。
*/
}
运行结果:
希望本文所述对大家Java程序设计有所帮助。


猜你喜欢
- 本文实例为大家分享了java文件处理工具类的具体代码,供大家参考,具体内容如下import java.io.BufferedInputStr
- 总结一下java使用http发送post的方法:1、post请求用于发送json 格式的参数:/** * post请求(用于请
- 本文实例讲述了Java基于动态规划法实现求最长公共子序列及最长公共子字符串。分享给大家供大家参考,具体如下:动态规划法经常会遇到复杂问题不能
- 写在前面Activity是Android四大组件之一,用于直接跟用户进行交互,本篇文章将介绍Activity的启动流程。用户启动Activi
- 微服务通过feign.RequestInterceptor传递参数Feign 支持请求 * ,在发送请求前,可以对发送的模板进行操作,例如设
- 使用mybatis生成逆向工程的详细步骤,我个人感觉这个是最简单的一个了,虽然网上有很多种的方法来生成逆向工程,可是这个方法最简单。在这里我
- 1、spring aop实现首先application-test.yml增加如下数据源的配置spring: datasource
- 简介FTP 简介FTP 即 文件传输协议(英语:File Transfer Protocol 的缩写)是一个用于计算机网络上在客户端和服务器
- 第一次Eclipse配置Tomcat和JDK都会遇到一些问题,小编当时也一头雾水,所以特对此进行了总结,希望可以帮到大家。A:需要的软件及版
- 废话开篇:iOS与android在实现列表界面的时候是有重用机制的,目的就是减少内存开销,用时间换空间。个人感觉flutter并没有特别强调
- 1、#{}是预编译处理,MyBatis在处理#{ }时,它会将sql中的#{ }替换为?,然后调用PreparedStatement的set
- 一、实现效果图二、实现代码1.自定义viewpackage com.czhappy.showintroduce.view;import an
- 1、Handle,MessageQueue,Message类图Handle: 处理消息,并提供一系列函数帮忙我们创建消息和插入消息到消息队列
- 二叉树的深度题目:输入一颗二叉树的根节点,求该树的的深度。输入一颗二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点
- 背景两张表,分别是 :sys_tbl,和 sys_field,其中:sys_tbl 是系统所有表的信息,包含两个字段 :code(表名),n
- //有何不足或者问题希望能够得到各位的多多指正,不胜感激import java.util.Scanner;/** *
- 概述在Compose中,图片组件主要有两种,分别是显示图标的Icon组件和显示图片的Image组件,当我们显示一系列的小图标的时候,我们可以
- springboot读取配置文件到静态工具类通常我们读取配置文件可以用@Value注解和@Configuration,@Configurat
- 本节向你展示如何在任务中发送数据给UI线程里的对象,这个特性允许你在后台线程工作,完了在UI线程展示结果。在UI线程定义一个HandlerH
- Unity Shader学习:玻璃材质,供大家参考。主要是通过反射和折射来达到透明的效果,用菲涅尔来混叠。shader部分:Shader &