A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨银川 黑马帝   /  2011-12-21 00:08  /  3466 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨银川 于 2011-12-21 15:29 编辑

想问一下public static void main(String[] args){}这个是一个java程序的入口,有哪位大侠给我解释一下它啊,他为什么要这么写,括号里的怎么是String[] args ?谢谢

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

6 个回复

倒序浏览
主函数:
  是一个特殊的函数,可以被JVM调用,作为程序的入口
主函数的定义:
public :该函数的权限最大
static:代表着主函数随着类的加载就存在了
void:             主函数没有具体返回的值
main:            不是关键字,但是是一个特殊的单词,能被JVM识别
函数的参数:(String[] args),参数类型是一个数组,数组中的
             元素是字符串。
JVM在调用主函数时,传入的是new String[0]

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
这绝对不是凭空想出来的,也不是没有道理的死规定,而是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沿用了这个历史传统。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
public static void main(String[] args){}
  首先:这是规定好的,不能变了。就像我们一出生父母就给我们起好名字了,没办法的事,不要想是先有鸡还是先有蛋这样的问题,照做就是了。
一定要了解的话我就说说自己的理解
JVM找这句话的main作为入口,public是权限修饰符(权限大),这个函数是主函数所以不会给其他函数传递什么变量,所以类型是void,
JVM把这句放在内存里的方法区(共享区),就用静态字static限定,  String是字符串的缩写,代表所传参数的类型(应该包含很多其他类型吧),然后就是args了,它是大家
都写的参数名,写得多了就流传了,可以修改为其他(这是唯一可变的)。

希望帮到你

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
张帅 黑马帝 2011-12-21 00:57:56
报纸
既然大家都从main方法上说了说,那我就从类上说说
一个java文件中,可以有多个类,当编译时,它将生成多个class文件,
java程序是从一个public类的main函数开始执行的,被jvm所识别,所以如果有多个public,那么它将不知道从哪个类开始执行,所以,在一个类文件中,最多只有一个public类,当然也可以没有,
但是如果你想让这个程序单独运行的话,则必须指定这个public的类,java文件的名字要和类一致,当然也可以不写public
以上是我的学习笔记,如有错误请指正

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
主函数是JVM的入口,作用是保证类的独立运行。
public:表示主函数是公共的,谁都可以调用它,
static:把主函数定义成静态的,加载类的时候把它也加载进来,这样JVM运行包含主函数的类时才有了入口,才知道要运行的类从哪开始运行
void :表示主函数是被调用并运行其中的代码而没有返回值
main:不是关键字,但却是一个能被JVM所识别的特殊的名称,不能改,如果改了的话,编译可以通过,但运行时,JVM会因找不到main,而提示此方法找不到。
String[] args:是一个接收字符串的字符串数组,做为参数接收JVM调用主函数时传递来的实参。当然数组名args是可以修改的,但一般还是用它了。

总之:主函数的格式除了args,可以修改外,其它的都是固定格式。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
{:soso_e163:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马