JavaSE基础 - main函数解析

为什么Java主函数要写成public static void main(String[] args),而不写成其他格式,可能我们已经习以为常,不去追究了!当然,这也是一个老话常谈的话题。那下面我们来系统的解析一下Java的main函数。

1.主函数有什么特殊之处?

首先,main函数的格式是固定的,毋庸置疑的。其次,main函数是JVM识别调用的入口函数。

2.public static void main(String[] args)都代表什么,为什么不选别的?

别急,我们一个一个看。

public访问权限修饰符。因为权限必须最大,所以使用public。(具体的权限信息找度娘)。

static: 静态修饰符。首先你必须知道main方法是一个程序的入口,如果写成非静态,那么就必须实例化一个对象再来调用它,入口函数何必难为入口呢?写成static不需要实例化对象,直接用主函数所属类名调用即可。

void: 返回值类型空。那你可能要问,为什么不写成int? Java中,JVM对main函数有限制,不能有返回值。写成int,让void和jvm情何以堪?

main: 函数名。切记不要和关键字搞混。它只是一个被JVM识别的固定的名字。

String[] args: 参数类型以及参数名称。你可能还要问,为什么是String类型,为什么参数名是args? String类型是Java的规范,不是你我能决定的;而args完全可以写成其他的合法标识符。但是为了统一起见使用args,它代表arguments:参数的意思。

因此,定义成public static void main(String[] args)貌似是必须的。

3.来段code解释岂不是更舒坦?

代码如下:

class MainDemo 
{
	public static void main(String[] args)
	{
		System.out.println(args);		//形参值。

		System.out.println(args.length);	//形参长度。

		System.out.println(args[0]);	//数组第一个元素值。
	}
}
输出结果:

JavaSE基础 - main函数解析_第1张图片

(1)"[Ljava.lang.String;@6d06d69c" :[Ljava.lang.String是clss名字,[ 表示一维数组,[[表示二维数组,L表示是对象类型,java.lang.String对象的标准类名;@6d06d9c代表哈希值。由此可知:主函数参数是一个类型为String名称为args的一维数组做形参。

(2)0 表示没有传入参数,那怎样传参呢?待会告诉你。

(3)因为没有传入参数,所以数组的长度为0,所以访问第一个数组元素产生越界。

4.那么怎么向main函数传参呢?

简单修改上面的code,如下:

//需求:传入三个参数,并打印数组长度及元素值。

class MainDemo 
{
	public static void main(String[] args)
	{
		System.out.println(args.length);

		System.out.println(args[0]);	//数组第一个元素值。

		System.out.println(args[1]);	//数组第一个元素值。

		System.out.println(args[2]);	//数组第一个元素值。
	}
}

输出如下:

JavaSE基础 - main函数解析_第2张图片

注意:MainDemo和二哈之间必须有空格。


总结:希望我的文章对你有帮助。


参考:http://blog.chinaunix.net/uid-20423564-id-1949304.html



你可能感兴趣的:(Java)