黑马程序员技术交流社区

标题: 主函数问题 [打印本页]

作者: 乞文超    时间: 2012-4-21 10:16
标题: 主函数问题
想问一下public static void main(String[] args){}这个是一个java程序的入口,他为什么要这么写,括号里的怎么是String[] args ?谢谢
作者: 黑马—王宁    时间: 2012-4-21 10:37
public:权限修饰符,权限最大。
static:随着MianDemo类的加载而加载,消失而消失。
void:  没有返回值
main: 函数名,jvm识别的特殊函数名
(String[] args):定义了一个字符串数组参数
参数args的主要作用是为程序使用者在命令行状态下与程序交互提供了一种手段。
此外在其他类中直接使用main()函数,并传递参数也是可行的,虽然这种方法不太常用,但毕竟为我们提供了一种选择。
作者: 韩新凯    时间: 2012-4-21 10:48
给你看看我这部分的笔记:/*
* 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]);
                }
        }
}
作者: 王胜利    时间: 2012-4-21 10:51
public是个修饰符,表示公共的,权限最大,java虚拟机可以访问,
static表示虚拟机不需要实例化就可以调用main方法。是个静态的方法
void表示这个方法没有返回值。
String args[]是方法的传入参数是字符串数组。"[]”表示数组。String表名参数类型是String类型。args是参数的名字。

main()函数是被jvm调用,jvm给main()传了一个长度为0的字符串的数组,也就是new String[0]
可以通过类名.main()进行传值操作,因为main()方法是static的。

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


作者: 邵中国    时间: 2012-4-21 14:32
表示接收一个字符数组的参数
作者: 张超超    时间: 2012-4-21 14:49
(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 等都可以。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2