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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 紫色梦幻1989 黑马帝   /  2011-12-29 10:12  /  3043 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 紫色梦幻1989 于 2012-1-6 18:05 编辑

java的主函数为什么一定要写成这样啊
     public  static void main (String args[]){}
           求理解。。。。。

14 个回复

倒序浏览
李楠 黑马帝 2011-12-29 10:15:48
沙发
公有,可以被包外的类引用
作为主函数只是依托于这个类,不需要等实例化就可以运行,所以是静态
主函数没必要返回值,因为执行完毕,程序就结束了,所以返回类型是void
String args[]表示一个可变的参数列表,用一个字符串数组接收。C语言的main也是有参数的,只是不用的话可以不写

评分

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

查看全部评分

回复 使用道具 举报
付旭 黑马帝 2011-12-29 10:35:26
藤椅
java主函数一般定义如下:public static void main(String[] args)
    其中每个单词表示的什么意思呢?我们一个个来看:
     public-表示方法main()可被任何程序访问,包括Java技术解释器。
    static- 是一个告知编译器,main()是用于类中的函数的关键字。为使main()在程序做其它事之前就开始运行,这一关键字是必要的。这里需要注意的是,如果Main()方法没有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示main()方法不存在。这是因为你如果这样使用命令行的形式直接执行该程序,包含main()的类并没有实例化,所以其main()方法也不会存在,而使用static修饰符则表示该方法是静态的,不需要实例化即可使用。
     void- 表明main()的返回值是“无类型”,其实它的返回值由主函数中的具体之星语句决定。这一点非常重要,因为Java编程语言要进行谨慎的类型检查,包括检查调用的方法确实返回了这些方法所声明的类型。
   String args [] - 是一个String数组的声明,那么它的返回值是什么呢?
我们在"HelloWorld.class”这个程序执行时,并没有看到有数组的输出啊,这是为什么呢?

我们在运行编译后的"HelloWorld.class”是,是在命令行中直接输入"java HelloWorld"的,如果在后面加点东西呢?
比如说输入"java HelloWorld name",运行后就会发现,输出了name
原来,数组String args []是用来输出类名后跟的参数的,
要是输入"java HelloWorld name age",
则会输出:
    ......
   name
   age
由此看来:String args [0]="name",String args [1]="age"。

评分

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

查看全部评分

回复 使用道具 举报
因为大家都是这样写,public  static void main (String args[]){}   除了args,其他的都是定死了·     这句话不需要太纠结 ·   以后用多了,到后面了自然就理解了!   
回复 使用道具 举报
java_zf 发表于 2011-12-29 11:36
因为大家都是这样写,public  static void main (String args[]){}   除了args,其他的都是定死了·     这 ...

我就public static void haha (String[] args)这么写不行么?
其实这么写编译也是可以的,但是不符合规范,

main只是个名字而已。 还有String 也可以修改的。
回复 使用道具 举报
之前不是学java的吗?怎么问这个问题啊!如果想进黑马,就需要努力了,建议你先下载视频从第一天开始多看看,加油!!!!!
回复 使用道具 举报
杨旭 黑马帝 2011-12-29 13:56:56
7#
主函数:是一个特殊的函数,作为程序的入口,可以被jvm调用

主函数的定义:

public:代表着该函数访问权限是最大的

static:代表着主函数随着类的加载就已经存在了

void:主函数没有具体的返回值

main:不是关键字,但是是一个特殊的单词 可以被jvm识别

(String[] args):函数的参数  参数类型是一个数组  数组的元素是字符串  字符串类型的数组

主函数的固定格式的 jvm识别

args  arguments 参数

评分

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

查看全部评分

回复 使用道具 举报
张一凡 黑马帝 2011-12-29 14:31:56
8#
房宝彬 发表于 2011-12-29 13:20
我就public static void haha (String[] args)这么写不行么?
其实这么写编译也是可以的,但是不符合规范 ...

当然可以这么写·     但是你这么写了就不是主方法了·      只有main猜可以被JVM识别

评分

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

查看全部评分

回复 使用道具 举报
房宝彬 黑马帝 2011-12-29 15:15:47
9#
java_zf 发表于 2011-12-29 14:31
当然可以这么写·     但是你这么写了就不是主方法了·      只有main猜可以被JVM识别 ...

3Q,我把JVM忽略了,, 你说的对,方法名定义什么名字都可以,但是惟独main是被JVM能识别的。
谢谢哈
回复 使用道具 举报
马新乐 黑马帝 2011-12-30 21:21:52
10#
晕了  搞不明白都从网上copy那么一大串东西有什么用,这就是一硬性规定,不想这么写就不能运行,想运行就必须有main入口,main入口的写法还必须就得这么写,仅此而已!!!

评分

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

查看全部评分

回复 使用道具 举报
java_zf 发表于 2011-12-29 11:36
因为大家都是这样写,public  static void main (String args[]){}   除了args,其他的都是定死了·     这 ...

恩,单个的public,static,void等我都懂,就是觉得整个理解的很僵硬~
回复 使用道具 举报
付旭 发表于 2011-12-29 10:35
java主函数一般定义如下:public static void main(String[] args)
    其中每个单词表示的什么意思呢?我 ...

恩,谢谢~
回复 使用道具 举报
付旭 发表于 2011-12-29 10:35
java主函数一般定义如下:public static void main(String[] args)
    其中每个单词表示的什么意思呢?我 ...

恩,知道啦,非常感谢!
回复 使用道具 举报
刘旭 黑马帝 2011-12-31 19:50:00
14#
这是一个主方法。当虚拟机运行时,首先寻找public类的主方法,进入程序运行的入口,因此,有外部调用此方法,必须定义成公共方法。void 表示此方法不返回任何数据。假如某个方法返回int型数据,则定义为 public int func(){  ……   return int型数据}。而String []args 表示java命令行输入存入args数组中,可以通过此数组引用这是一种习惯写法,args只是一个数组名字的引用,当然可以改为其他,例如String []a              args原先的习惯写法是arguments,在英语中是变量复数形式,后来,老外为了简便,简写成args。可以自己定义次变量名。

评分

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

查看全部评分

回复 使用道具 举报
代臣 黑马帝 2011-12-31 21:26:00
15#
主函数
public static void main(String[] args)
主函数:是一个特殊的函数.作为程序的入口,可以被jvm调用。
主函数的定义:
public:代表着该函数访问权限是最大的.
static:代表着主函数随着类的加载就已经存在了。
void:主函数没有具体的返回值.(虚拟机调用主函数)
main:不是关键字,但是是一个特殊的单词,可以被jvm识别.
(String[] arr):主函数的参数,参数类型是一个数组,该数组中的元素是字符串,字符串类型的数组.本来是args(最开始老外用的arguments(参数),后来简写为args),只是这是个String类型的参数而已,可以随便命名,比如Str,但是因为大家都这样写了,所以默认的就写args。
主函数是固定格式的:由jvm识别.
引用数据类型接收的值要嘛为空,要嘛传入实体值。
jvm在调用主函数时,传入的是new String[0],即没有元素。
  1. //下面这段代码是正确的,可以执行*/
  2. class MainDemo
  3. {
  4.         public static void main(int x)
  5.         {

  6.         }
  7.         public static void main(String[] args) //由于jvm的识别功能,程序从这个地方开始执行.
  8.         {

  9.                 System.out.println(args+"\n"+"args.length="+args.length);
  10.         }

  11.         public static void main(String args,int x)
  12.         {

  13.         }
  14. }
  15. //调试结果如下图片

复制代码

1.JPG (6.52 KB, 下载次数: 83)

1.JPG

评分

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

查看全部评分

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