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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乞文超 中级黑马   /  2012-4-21 10:16  /  2654 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

想问一下public static void main(String[] args){}这个是一个java程序的入口,他为什么要这么写,括号里的怎么是String[] args ?谢谢

7 个回复

倒序浏览
public:权限修饰符,权限最大。
static:随着MianDemo类的加载而加载,消失而消失。
void:  没有返回值
main: 函数名,jvm识别的特殊函数名
(String[] args):定义了一个字符串数组参数
参数args的主要作用是为程序使用者在命令行状态下与程序交互提供了一种手段。
此外在其他类中直接使用main()函数,并传递参数也是可行的,虽然这种方法不太常用,但毕竟为我们提供了一种选择。
回复 使用道具 举报
给你看看我这部分的笔记:/*
* public static void main(String[] args)
* 主函数:是一个特殊的函数,作为程序入口,可以被jvm调用。
*
* 主函数的定义:
* public:代表着该函数访问权限是最大的。
* static:代表主函数随着类的加载就已经存在了。
* void:主函数没有具体的返回值。
* main:不是关键字,但是是一个特殊的单词,可以被jvm识别。
* (String[] args):函数的参数,参数类型是一个数组,该数组中的元素是字符串。
* 字符串类型的数组。args:arguments.args是可变的,不一定是args,可以是x,y...等。
* 主函数是固定格式的:jvm识别。
*
* jvm在调用主函数的时候,传入的是new String[0];这里的0是指没有元素,
* args[0]指数组的第一个元素。
*/
public class MainDemo {
        public static void main(String[] args)//new String();
        {
//                System.out.println("HelloWorld!");
//                dMainDemo.main();
//                System.out.println(args.length);
//                System.out.println(args[0]);//不正确,args[0]是args数组的第一个元素,

                String[] arr = {"ss","dd","ff"};
                MainTest.main(arr);
               
        }
//        public static void main(){    //重载,正确。
//                System.out.println("haha");
//        }
}
//String[] args = new String[];
//String[] args = null;

class MainTest{
        public static void main(String[] args){
                for(int x=0;x<args.length;x++){
                        System.out.println(args[x]);
                }
        }
}
回复 使用道具 举报
public是个修饰符,表示公共的,权限最大,java虚拟机可以访问,
static表示虚拟机不需要实例化就可以调用main方法。是个静态的方法
void表示这个方法没有返回值。
String args[]是方法的传入参数是字符串数组。"[]”表示数组。String表名参数类型是String类型。args是参数的名字。

main()函数是被jvm调用,jvm给main()传了一个长度为0的字符串的数组,也就是new String[0]
可以通过类名.main()进行传值操作,因为main()方法是static的。
回复 使用道具 举报
1.public关键字,这个好理解,声明主函数为public就是告诉其他的类可以访问这个函数。
2.static关键字,告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,即当定义了类以后这段代码就已经存在了。如果main()方法没有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示main()方法不存在。因为包含main()的类并没有实例化(即没有这个类的对象),所以其main()方法也不会存。而使用static修饰符则表示该方法是静态的,不需要实例化即可使用。
3.void关键字表明main()的返回值是无类型。
4.参数String[] args 函数的参数,参数类型是一个数组,该数组中的元素是字符串.参数args的主要作用是为程序使用者在命令行状态下与程序交互提供了一种手段.

回复 使用道具 举报
表示接收一个字符数组的参数
回复 使用道具 举报
张超超 黑马帝 2012-4-21 14:49:01
7#
(1)public关键字,这个好理解,声明主函数为public就是告诉其他的类可以访问这个函数。

  (2)static关键字,告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,即当定义了类以后这段代码就已经存在了。如果main()方法没有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示main()方法不存在。因为包含main()的类并没有实例化(即没有这个类的对象),所以其main()方法也不会存。而使用static修饰符则表示该方法是静态的,不需要实例化即可使用。

  (3)void关键字表明main()的返回值是无类型。

  (4)参数String[] args,参数args的主要作用是为程序使用者在命令行状态下与程序交互提供了一种手段。此外在其他类中直接使用main()函数,并传递参数也是可行的,虽然这种方法不太常用,但毕竟为我们提供了一种选择,当然,args这个只是String数组的名字,你业可以写成其他的形式,如arg   ar 等都可以。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马